summaryrefslogtreecommitdiff
path: root/Makefile.win
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@gmail.com>2023-05-12 18:25:29 -0400
committerRonny Berndt <ronny@apache.org>2023-05-15 21:36:15 +0200
commitbe9b8e96a6b3bebfed15178f79bdafe4af9f2d9c (patch)
tree732df45c19faac66af475c4da9d533ef570178de /Makefile.win
parenta58684f4209b3673e60b79ce3531fff116a9dce9 (diff)
downloadcouchdb-be9b8e96a6b3bebfed15178f79bdafe4af9f2d9c.tar.gz
Add a simple fabric benchmarkalign-makefiles
This is mostly a diagnostic tool in the spirit of couch_debug. It creates a database, fills it with some docs, and then tries to read them. It computes rough expected rates for doc operations: how many docs per second it could insert, read, get via _all_docs, etc. When the test is done, it deletes the database. If it crashes, it also deletes the database. If someone brutally kills it, the subsequent runs will still find old databases and delete them. To run a benchmark: ``` fabric_bench:go(). ``` Pass parameters as a map: ``` fabric_bench:go(#{doc_size=>large, docs=>25000}). ``` To get available options: ``` fabric_bench:opts() ```
Diffstat (limited to 'Makefile.win')
-rw-r--r--Makefile.win70
1 files changed, 59 insertions, 11 deletions
diff --git a/Makefile.win b/Makefile.win
index 418a14515..542b7a7d8 100644
--- a/Makefile.win
+++ b/Makefile.win
@@ -78,7 +78,7 @@ DESTDIR=
# Rebar options
apps=
-skip_deps=folsom,meck,mochiweb,triq,proper,snappy,bcrypt,hyper,ibrowse,local
+skip_deps=folsom,meck,mochiweb,triq,proper,snappy,bcrypt,hyper,ibrowse
suites=
tests=
@@ -98,7 +98,7 @@ TEST_OPTS=-c startup_jitter=0 -c default_security=admin_local
.PHONY: all
# target: all - Build everything
-all: couch fauxton docs
+all: couch fauxton docs nouveau
.PHONY: help
@@ -140,9 +140,11 @@ fauxton: share\www
.PHONY: check
# target: check - Test everything
check: all
+ @$(MAKE) exunit
@$(MAKE) eunit
@$(MAKE) mango-test
@$(MAKE) elixir-suite
+ @$(MAKE) nouveau-test
ifdef apps
subdirs = $(apps)
@@ -167,8 +169,9 @@ exunit: export MIX_ENV=test
exunit: export ERL_LIBS = $(shell echo %cd%)/src
exunit: export ERL_AFLAGS = -config $(shell echo "%cd%")/rel/files/eunit.config
exunit: export COUCHDB_QUERY_SERVER_JAVASCRIPT = $(shell echo %cd%)/bin/couchjs $(shell echo %cd%)/share/server/main.js
-exunit: couch elixir-init setup-eunit elixir-check-formatted elixir-credo
- @mix test --cover --trace $(EXUNIT_OPTS)
+exunit: export COUCHDB_TEST_ADMIN_PARTY_OVERRIDE=1
+exunit: couch elixir-init setup-eunit
+ @mix test --trace $(EXUNIT_OPTS)
setup-eunit: export BUILDDIR = $(shell echo %cd%)
setup-eunit: export ERL_AFLAGS = -config $(shell echo "%cd%")/rel/files/eunit.config
@@ -215,26 +218,27 @@ python-black-update: .venv/bin/black
.PHONY: elixir
elixir: export MIX_ENV=integration
elixir: export COUCHDB_TEST_ADMIN_PARTY_OVERRIDE=1
-elixir: elixir-init elixir-check-formatted elixir-credo devclean
- @dev\run $(TEST_OPTS) -a adm:pass -n 1 --enable-erlang-views \
+elixir: elixir-init devclean
+ @dev\run $(TEST_OPTS) -a adm:pass -n 1 \
+ --enable-erlang-views \
--locald-config test/elixir/test/config/test-config.ini \
--no-eval 'mix test --trace --exclude without_quorum_test --exclude with_quorum_test $(EXUNIT_OPTS)'
.PHONY: elixir-init
-elixir-init: MIX_ENV=test
+elixir-init: MIX_ENV=integration
elixir-init: config.erl
@mix local.rebar --force && mix local.hex --force && mix deps.get
.PHONY: elixir-cluster-without-quorum
elixir-cluster-without-quorum: export MIX_ENV=integration
-elixir-cluster-without-quorum: elixir-init elixir-check-formatted elixir-credo devclean
+elixir-cluster-without-quorum: elixir-init devclean
@dev\run -n 3 -q -a adm:pass \
--degrade-cluster 2 \
--no-eval 'mix test --trace --only without_quorum_test $(EXUNIT_OPTS)'
.PHONY: elixir-cluster-with-quorum
elixir-cluster-with-quorum: export MIX_ENV=integration
-elixir-cluster-with-quorum: elixir-init elixir-check-formatted elixir-credo devclean
+elixir-cluster-with-quorum: elixir-init devclean
@dev\run -n 3 -q -a adm:pass \
--degrade-cluster 1 \
--no-eval 'mix test --trace --only with_quorum_test $(EXUNIT_OPTS)'
@@ -269,7 +273,11 @@ elixir-source-checks: elixir-init
.PHONY: build-report
# target: build-report - Generate a build report
build-report:
- @$(PYTHON) build-aux/show-test-results.py --suites=10 --tests=10 > test-results.log
+ @$(PYTHON) build-aux/show-test-results.py --suites=10 --tests=10 > test-results.log || true
+ cat .\dev\logs\node1.log || true
+ cat .\dev\logs\nouveau.log || true
+ cat .\tmp\couch.log || true
+ cat test-results.log || true
.PHONY: check-qs
# target: check-qs - Run query server tests (ruby and rspec required!)
@@ -293,7 +301,7 @@ list-eunit-suites:
mango-test: export COUCHDB_TEST_ADMIN_PARTY_OVERRIDE=1
mango-test: devclean all
@cd src\mango && \
- python.exe -m venv .venv && \
+ @$(PYTHON) -m venv .venv && \
.venv\Scripts\pip.exe install -r requirements.txt
@cd src\mango && \
..\..\dev\run $(TEST_OPTS) \
@@ -383,6 +391,12 @@ else
endif
endif
+ifeq ($(with_nouveau), 1)
+ -@mkdir -p rel\couchdb\nouveau
+ @cp nouveau\build\libs\server-*-dist.jar rel\couchdb\nouveau\
+ @cp nouveau\nouveau.yaml rel\couchdb\nouveau\
+endif
+
@echo ... done
@echo .
@echo You can now copy the rel\couchdb directory anywhere on your system.
@@ -423,6 +437,9 @@ clean:
-@rmdir /s/q src\mango\.venv
-@del /f/q src\couch\priv\couch_js\config.h
-@del /f/q dev\boot_node.beam dev\pbkdf2.pyc log\crash.log
+ifeq ($(with_nouveau), 1)
+ @cd nouveau && ./gradlew clean
+endif
.PHONY: distclean
@@ -489,3 +506,34 @@ derived:
@echo "ON_TAG: $(ON_TAG)"
@echo "REL_TAG: $(REL_TAG)"
@echo "SUB_VSN: $(SUB_VSN)"
+
+################################################################################
+# Nouveau
+################################################################################
+
+.PHONY: nouveau
+# target: nouveau - Build nouveau
+nouveau:
+ifeq ($(with_nouveau), 1)
+ @cd nouveau && ./gradlew build -x test
+endif
+
+.PHONY: nouveau-test
+# target: nouveau-test - Run nouveau tests
+nouveau-test: nouveau-test-gradle nouveau-test-elixir
+
+.PHONY: nouveau-test-gradle
+nouveau-test-gradle: couch nouveau
+ifeq ($(with_nouveau), 1)
+ @cd nouveau && ./gradlew test
+endif
+
+.PHONY: nouveau-test-elixir
+nouveau-test-elixir: export MIX_ENV=integration
+nouveau-test-elixir: elixir-init devclean
+nouveau-test-elixir: couch nouveau
+ifeq ($(with_nouveau), 1)
+ @dev/run -n 1 -q -a adm:pass --with-nouveau \
+ --locald-config test/config/test-config.ini \
+ --no-eval 'mix test --trace --include test/elixir/test/config/nouveau.elixir'
+endif