diff --git a/.gitattributes b/.gitattributes index 7b7f56abb7a..0c4d7cf7be8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,3 @@ -nouveau/**/* text eol=lf -nouveau/**/*.bat text eol=crlf -nouveau/**/*.jar binary +extra/nouveau/**/* text eol=lf +extra/nouveau/**/*.bat text eol=crlf +extra/nouveau/**/*.jar binary diff --git a/Makefile b/Makefile index 06578a6ebfc..22e2c77e0af 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ include version.mk REBAR?=$(CURDIR)/bin/rebar REBAR3?=$(CURDIR)/bin/rebar3 ERLFMT?=$(CURDIR)/bin/erlfmt -GRADLE?=$(CURDIR)/nouveau/gradlew +GRADLE?=$(CURDIR)/extra/nouveau/gradlew # Handle the following scenarios: # 1. When building from a tarball, use version.mk. @@ -106,7 +106,7 @@ endif .PHONY: all # target: all - Build everything -all: couch fauxton docs escriptize nouveau +all: couch-core fauxton docs escriptize extra/nouveau .PHONY: help @@ -123,9 +123,9 @@ help: ################################################################################ -.PHONY: couch -# target: couch - Build CouchDB core, use ERL_COMPILER_OPTIONS to provide custom compiler's options -couch: config.erl +.PHONY: couch-core +# target: couch-core - Build CouchDB core, use ERL_COMPILER_OPTIONS to provide custom compiler's options +couch-core: config.erl @COUCHDB_VERSION=$(COUCHDB_VERSION) COUCHDB_GIT_SHA=$(COUCHDB_GIT_SHA) $(REBAR) compile $(COMPILE_OPTS) ifeq ($(with_spidermonkey), true) @cp src/couch/priv/couchjs bin/ @@ -146,7 +146,7 @@ fauxton: share/www .PHONY: escriptize # target: escriptize - Build CLI tools -escriptize: couch +escriptize: couch-core @$(REBAR) -r escriptize apps=weatherreport @cp src/weatherreport/weatherreport bin/weatherreport @@ -155,36 +155,42 @@ escriptize: couch # Testing ################################################################################ - -.PHONY: check +CHECKS="xref elixir eunit elixir-search weatherreport-test nouveau-test" +.PHONY: check $(CHECKS) # target: check - Test everything -check: all - @$(MAKE) xref - @$(MAKE) eunit - @$(MAKE) mango-test - @$(MAKE) elixir - @$(MAKE) elixir-search - @$(MAKE) weatherreport-test - @$(MAKE) nouveau-test +check: all $(CHECKS) + @${MAKE} mango-test + @${MAKE} nouveau-test ifdef apps -subdirs = $(apps) +SUBDIRS = $(apps) else -subdirs=$(shell ls src) +SUBDIRS=$(shell ls src) endif -.PHONY: eunit +# Used for comparing behaviour against he new `eunit` target, delete once we +# are happy with the new `eunit`. +.PHONY: old-eunit +old-eunit: export BUILDDIR = $(CURDIR) +old-eunit: export ERL_AFLAGS = -config $(CURDIR)/rel/files/eunit.config +old-eunit: export COUCHDB_QUERY_SERVER_JAVASCRIPT = $(CURDIR)/bin/couchjs $(CURDIR)/share/server/main.js +old-eunit: export COUCHDB_TEST_ADMIN_PARTY_OVERRIDE=1 +old-eunit: + @COUCHDB_VERSION=$(COUCHDB_VERSION) COUCHDB_GIT_SHA=$(COUCHDB_GIT_SHA) $(REBAR) setup_eunit 2> /dev/null + @for dir in $(SUBDIRS); do \ + COUCHDB_VERSION=$(COUCHDB_VERSION) COUCHDB_GIT_SHA=$(COUCHDB_GIT_SHA) $(REBAR) -r eunit $(EUNIT_OPTS) apps=$$dir || exit 1; \ + done + # target: eunit - Run EUnit tests, use EUNIT_OPTS to provide custom options +.PHONY: eunit $(SUBDIRS) eunit: export BUILDDIR = $(CURDIR) eunit: export ERL_AFLAGS = -config $(CURDIR)/rel/files/eunit.config eunit: export COUCHDB_QUERY_SERVER_JAVASCRIPT = $(CURDIR)/bin/couchjs $(CURDIR)/share/server/main.js eunit: export COUCHDB_TEST_ADMIN_PARTY_OVERRIDE=1 -eunit: couch - @COUCHDB_VERSION=$(COUCHDB_VERSION) COUCHDB_GIT_SHA=$(COUCHDB_GIT_SHA) $(REBAR) setup_eunit 2> /dev/null - @for dir in $(subdirs); do \ - COUCHDB_VERSION=$(COUCHDB_VERSION) COUCHDB_GIT_SHA=$(COUCHDB_GIT_SHA) $(REBAR) -r eunit $(EUNIT_OPTS) apps=$$dir || exit 1; \ - done +eunit: ${SUBDIRS} +$(SUBDIRS): setup-eunit + @COUCHDB_VERSION=$(COUCHDB_VERSION) COUCHDB_GIT_SHA=$(COUCHDB_GIT_SHA) $(REBAR) -r eunit $(EUNIT_OPTS) apps=$@ #|| exit 1 setup-eunit: export BUILDDIR = $(CURDIR) setup-eunit: export ERL_AFLAGS = -config $(CURDIR)/rel/files/eunit.config @@ -199,7 +205,7 @@ just-eunit: .PHONY: soak-eunit soak-eunit: export BUILDDIR = $(CURDIR) soak-eunit: export ERL_AFLAGS = -config $(CURDIR)/rel/files/eunit.config -soak-eunit: couch +soak-eunit: couch-core @$(REBAR) setup_eunit 2> /dev/null while [ $$? -eq 0 ] ; do $(REBAR) -r eunit $(EUNIT_OPTS) ; done @@ -356,7 +362,7 @@ weatherreport-test: devclean escriptize .PHONY: quickjs-test262 # target: quickjs-javascript-tests - Run QuickJS JS conformance tests -quickjs-test262: couch +quickjs-test262: couch-core make -C src/couch_quickjs/quickjs test2-bootstrap make -C src/couch_quickjs/quickjs test2 @@ -450,8 +456,8 @@ endif ifeq ($(with_nouveau), true) @mkdir rel/couchdb/nouveau - @cd nouveau && $(GRADLE) installDist - @cp -R nouveau/build/install/nouveau rel/couchdb + @cd extra/nouveau && $(GRADLE) installDist + @cp -R extra/nouveau/build/install/nouveau rel/couchdb endif @echo "... done" @@ -500,7 +506,7 @@ clean: @rm -rf src/couch_dist/certs/out @rm -rf src/docs/build src/docs/.venv ifeq ($(with_nouveau), true) - @cd nouveau && $(GRADLE) clean + @cd extra/nouveau && $(GRADLE) clean endif @@ -565,12 +571,12 @@ derived: # Nouveau ################################################################################ -.PHONY: nouveau +.PHONY: extra/nouveau # target: nouveau - Build nouveau -nouveau: +extra/nouveau: ifeq ($(with_nouveau), true) - @cd nouveau && $(GRADLE) spotlessApply - @cd nouveau && $(GRADLE) build -x test + @cd extra/nouveau && $(GRADLE) spotlessApply + @cd extra/nouveau && $(GRADLE) build -x test endif .PHONY: nouveau-test @@ -578,15 +584,15 @@ endif nouveau-test: nouveau-test-gradle nouveau-test-elixir .PHONY: nouveau-test-gradle -nouveau-test-gradle: couch nouveau +nouveau-test-gradle: couch-core extra/nouveau ifeq ($(with_nouveau), true) - @cd nouveau && $(GRADLE) test --info --rerun + @cd extra/nouveau && $(GRADLE) test --info --rerun endif .PHONY: nouveau-test-elixir nouveau-test-elixir: export MIX_ENV=integration nouveau-test-elixir: elixir-init devclean -nouveau-test-elixir: couch nouveau +nouveau-test-elixir: couch-core extra/nouveau ifeq ($(with_nouveau), true) @dev/run "$(TEST_OPTS)" -n 1 -q -a adm:pass --with-nouveau \ --locald-config test/config/test-config.ini \ diff --git a/README-DEV.rst b/README-DEV.rst index a2eec4b44f3..6726db0055a 100644 --- a/README-DEV.rst +++ b/README-DEV.rst @@ -223,6 +223,22 @@ to specify exact ``rebar eunit`` options:: make eunit EUNIT_OPTS="apps=couch,chttpd" +Running Erlang tests in Parallel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you have GNU make (`gmake`) installed, you can supply a `-jN` parameter to +run as many jobs in parallel. To avoid clobbering output, use the +`--output-sync` option. + + gmake eunit -j2 --output-sync=target + +This runs two test modules in parallel at a time. On a machine with two or more +CPUs, this should reduce the total wall clock time of testing to up to one half. + +Higher `N` might also work, but the test suite is still undergoing hardening to +support full parallelism, so spurious errors that do not occur with `-j1` might +show up. + Elixir Integration Tests ~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/dev/run b/dev/run index 640d15d22ff..c58b8a7cf28 100755 --- a/dev/run +++ b/dev/run @@ -546,7 +546,7 @@ def boot_nouveau(ctx): config = os.path.join(ctx["devdir"], "lib", "nouveau.yaml") gradle = "gradlew.bat" if os.name == "nt" else "gradlew" cmd = [ - os.path.join(ctx["rootdir"], "nouveau", gradle), + os.path.join(ctx["rootdir"], "extra", "nouveau", gradle), "run", "--args", f"server '{config}'", @@ -555,7 +555,7 @@ def boot_nouveau(ctx): log = open(logfname, "w") return sp.Popen( cmd, - cwd=os.path.join(ctx["rootdir"], "nouveau"), + cwd=os.path.join(ctx["rootdir"], "extra", "nouveau"), stdin=sp.PIPE, stdout=log, stderr=sp.STDOUT, diff --git a/nouveau/.gitignore b/extra/nouveau/.gitignore similarity index 100% rename from nouveau/.gitignore rename to extra/nouveau/.gitignore diff --git a/nouveau/LICENSE b/extra/nouveau/LICENSE similarity index 100% rename from nouveau/LICENSE rename to extra/nouveau/LICENSE diff --git a/nouveau/README.md b/extra/nouveau/README.md similarity index 100% rename from nouveau/README.md rename to extra/nouveau/README.md diff --git a/nouveau/TODO b/extra/nouveau/TODO similarity index 100% rename from nouveau/TODO rename to extra/nouveau/TODO diff --git a/nouveau/build.gradle b/extra/nouveau/build.gradle similarity index 100% rename from nouveau/build.gradle rename to extra/nouveau/build.gradle diff --git a/nouveau/gradle/wrapper/gradle-wrapper.jar b/extra/nouveau/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from nouveau/gradle/wrapper/gradle-wrapper.jar rename to extra/nouveau/gradle/wrapper/gradle-wrapper.jar diff --git a/nouveau/gradle/wrapper/gradle-wrapper.properties b/extra/nouveau/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from nouveau/gradle/wrapper/gradle-wrapper.properties rename to extra/nouveau/gradle/wrapper/gradle-wrapper.properties diff --git a/nouveau/gradlew b/extra/nouveau/gradlew similarity index 100% rename from nouveau/gradlew rename to extra/nouveau/gradlew diff --git a/nouveau/gradlew.bat b/extra/nouveau/gradlew.bat similarity index 96% rename from nouveau/gradlew.bat rename to extra/nouveau/gradlew.bat index 25da30dbdee..7101f8e4676 100644 --- a/nouveau/gradlew.bat +++ b/extra/nouveau/gradlew.bat @@ -1,92 +1,92 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/nouveau/settings.gradle b/extra/nouveau/settings.gradle similarity index 100% rename from nouveau/settings.gradle rename to extra/nouveau/settings.gradle diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplication.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplication.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplication.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplication.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplicationConfiguration.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplicationConfiguration.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplicationConfiguration.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplicationConfiguration.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/AnalyzeRequest.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/AnalyzeRequest.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/AnalyzeRequest.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/AnalyzeRequest.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/AnalyzeResponse.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/AnalyzeResponse.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/AnalyzeResponse.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/AnalyzeResponse.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DocumentDeleteRequest.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DocumentDeleteRequest.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/DocumentDeleteRequest.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DocumentDeleteRequest.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DocumentUpdateRequest.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DocumentUpdateRequest.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/DocumentUpdateRequest.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DocumentUpdateRequest.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DoubleField.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DoubleField.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/DoubleField.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DoubleField.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DoubleRange.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DoubleRange.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/DoubleRange.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/DoubleRange.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/Field.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/Field.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/Field.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/Field.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexDefinition.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexDefinition.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexDefinition.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexDefinition.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfo.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfoRequest.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfoRequest.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfoRequest.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/IndexInfoRequest.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/Ok.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/Ok.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/Ok.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/Ok.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/Range.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/Range.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/Range.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/Range.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchHit.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchHit.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchHit.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchHit.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchRequest.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchRequest.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchRequest.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchRequest.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchResults.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchResults.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchResults.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/SearchResults.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/StoredField.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/StoredField.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/StoredField.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/StoredField.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/StringField.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/StringField.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/StringField.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/StringField.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/api/TextField.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/TextField.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/api/TextField.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/api/TextField.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IOUtils.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IOUtils.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/IOUtils.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IOUtils.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexFunction.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexFunction.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexFunction.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexFunction.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/StaleIndexException.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/StaleIndexException.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/StaleIndexException.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/StaleIndexException.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/StripedLock.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/StripedLock.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/StripedLock.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/StripedLock.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/UpdatesOutOfOrderException.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/UpdatesOutOfOrderException.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/UpdatesOutOfOrderException.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/UpdatesOutOfOrderException.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/UserAgentFilter.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/UserAgentFilter.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/UserAgentFilter.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/UserAgentFilter.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/ByteArrayWrapper.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/ByteArrayWrapper.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/ByteArrayWrapper.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/ByteArrayWrapper.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/DoubleWrapper.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/DoubleWrapper.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/DoubleWrapper.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/DoubleWrapper.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/FloatWrapper.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/FloatWrapper.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/FloatWrapper.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/FloatWrapper.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/IntWrapper.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/IntWrapper.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/IntWrapper.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/IntWrapper.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/LongWrapper.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/LongWrapper.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/LongWrapper.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/LongWrapper.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/NullWrapper.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/NullWrapper.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/NullWrapper.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/NullWrapper.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/PrimitiveWrapper.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/PrimitiveWrapper.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/PrimitiveWrapper.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/PrimitiveWrapper.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/StringWrapper.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/StringWrapper.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/StringWrapper.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/core/ser/StringWrapper.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/health/AnalyzeHealthCheck.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/health/AnalyzeHealthCheck.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/health/AnalyzeHealthCheck.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/health/AnalyzeHealthCheck.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/health/IndexHealthCheck.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/health/IndexHealthCheck.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/health/IndexHealthCheck.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/health/IndexHealthCheck.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactory.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactory.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactory.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactory.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Index.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Index.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Index.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Index.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexSchema.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexSchema.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexSchema.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexSchema.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Module.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Module.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Module.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/Lucene9Module.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParser.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParser.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParser.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParser.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/ParallelSearcherFactory.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/ParallelSearcherFactory.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/ParallelSearcherFactory.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/ParallelSearcherFactory.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QueryDeserializer.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QueryDeserializer.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QueryDeserializer.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QueryDeserializer.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/SimpleAsciiFoldingAnalyzer.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/SimpleAsciiFoldingAnalyzer.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/SimpleAsciiFoldingAnalyzer.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/SimpleAsciiFoldingAnalyzer.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/AnalyzeResource.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/AnalyzeResource.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/resources/AnalyzeResource.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/AnalyzeResource.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/IndexResource.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/IndexResource.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/resources/IndexResource.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/IndexResource.java diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/tasks/CloseAllIndexesTask.java b/extra/nouveau/src/main/java/org/apache/couchdb/nouveau/tasks/CloseAllIndexesTask.java similarity index 100% rename from nouveau/src/main/java/org/apache/couchdb/nouveau/tasks/CloseAllIndexesTask.java rename to extra/nouveau/src/main/java/org/apache/couchdb/nouveau/tasks/CloseAllIndexesTask.java diff --git a/nouveau/src/main/resources/banner.txt b/extra/nouveau/src/main/resources/banner.txt similarity index 100% rename from nouveau/src/main/resources/banner.txt rename to extra/nouveau/src/main/resources/banner.txt diff --git a/nouveau/src/main/resources/openapi.yaml b/extra/nouveau/src/main/resources/openapi.yaml similarity index 100% rename from nouveau/src/main/resources/openapi.yaml rename to extra/nouveau/src/main/resources/openapi.yaml diff --git a/nouveau/src/test/java/org/apache/couchdb/nouveau/api/SearchRequestTest.java b/extra/nouveau/src/test/java/org/apache/couchdb/nouveau/api/SearchRequestTest.java similarity index 100% rename from nouveau/src/test/java/org/apache/couchdb/nouveau/api/SearchRequestTest.java rename to extra/nouveau/src/test/java/org/apache/couchdb/nouveau/api/SearchRequestTest.java diff --git a/nouveau/src/test/java/org/apache/couchdb/nouveau/core/IndexManagerTest.java b/extra/nouveau/src/test/java/org/apache/couchdb/nouveau/core/IndexManagerTest.java similarity index 100% rename from nouveau/src/test/java/org/apache/couchdb/nouveau/core/IndexManagerTest.java rename to extra/nouveau/src/test/java/org/apache/couchdb/nouveau/core/IndexManagerTest.java diff --git a/nouveau/src/test/java/org/apache/couchdb/nouveau/health/AnalyzeHealthCheckTest.java b/extra/nouveau/src/test/java/org/apache/couchdb/nouveau/health/AnalyzeHealthCheckTest.java similarity index 100% rename from nouveau/src/test/java/org/apache/couchdb/nouveau/health/AnalyzeHealthCheckTest.java rename to extra/nouveau/src/test/java/org/apache/couchdb/nouveau/health/AnalyzeHealthCheckTest.java diff --git a/nouveau/src/test/java/org/apache/couchdb/nouveau/health/IndexHealthCheckTest.java b/extra/nouveau/src/test/java/org/apache/couchdb/nouveau/health/IndexHealthCheckTest.java similarity index 100% rename from nouveau/src/test/java/org/apache/couchdb/nouveau/health/IndexHealthCheckTest.java rename to extra/nouveau/src/test/java/org/apache/couchdb/nouveau/health/IndexHealthCheckTest.java diff --git a/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java b/extra/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java similarity index 100% rename from nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java rename to extra/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java diff --git a/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexTest.java b/extra/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexTest.java similarity index 100% rename from nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexTest.java rename to extra/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9IndexTest.java diff --git a/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParserTest.java b/extra/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParserTest.java similarity index 100% rename from nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParserTest.java rename to extra/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/NouveauQueryParserTest.java diff --git a/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/QuerySerializationTest.java b/extra/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/QuerySerializationTest.java similarity index 100% rename from nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/QuerySerializationTest.java rename to extra/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/QuerySerializationTest.java diff --git a/nouveau/src/test/resources/fixtures/DocumentUpdateRequest.json b/extra/nouveau/src/test/resources/fixtures/DocumentUpdateRequest.json similarity index 100% rename from nouveau/src/test/resources/fixtures/DocumentUpdateRequest.json rename to extra/nouveau/src/test/resources/fixtures/DocumentUpdateRequest.json diff --git a/nouveau/src/test/resources/fixtures/SearchRequest.json b/extra/nouveau/src/test/resources/fixtures/SearchRequest.json similarity index 100% rename from nouveau/src/test/resources/fixtures/SearchRequest.json rename to extra/nouveau/src/test/resources/fixtures/SearchRequest.json diff --git a/src/chttpd/src/chttpd_test_util.erl b/src/chttpd/src/chttpd_test_util.erl index 8a849acda1c..43bb72cf682 100644 --- a/src/chttpd/src/chttpd_test_util.erl +++ b/src/chttpd/src/chttpd_test_util.erl @@ -17,7 +17,7 @@ -include_lib("couch/include/couch_eunit.hrl"). start_couch() -> - start_couch(?CONFIG_CHAIN). + test_util:start_couch([chttpd]). start_couch(IniFiles) -> test_util:start_couch(IniFiles, [chttpd]). diff --git a/src/couch/src/test_util.erl b/src/couch/src/test_util.erl index b8001840fb9..4b3e63ad337 100644 --- a/src/couch/src/test_util.erl +++ b/src/couch/src/test_util.erl @@ -44,7 +44,7 @@ -include("couch_db_int.hrl"). -include("couch_bt_engine.hrl"). --record(test_context, {mocked = [], started = [], module}). +-record(test_context, {mocked = [], started = [], module, dir}). -define(DEFAULT_APPS, [inets, ibrowse, ssl, config, couch_epi, couch_event, couch]). @@ -81,21 +81,60 @@ start_couch() -> start_couch(ExtraApps) -> start_couch(?CONFIG_CHAIN, ExtraApps). +% This function starts CouchDB with optional extra apps in a dedicated +% directory under tmp/couchdb-tests// — That is, all instances +% run isolated so that if more than one runs at a time, it does not +% interfere with any of the others. +% The sub-directories here are etc/ log/ and data/ for configuration +% logs and databases and view indexes respectively. +% The function copies the initial bespoke test-ini files to the new +% random directory and configures CouchDB to use those. +% The two pieces of state created here are the random dir in the file system and +% the process env var {config, ini_files} that is read by couch_config on +% startup. These need to be reset at the right points in time. +% the random dir is deleted and the env var reset when CouchDB is stopped. +% Note: there is currently a case where stop_couch/0 could be called and +% the file system cleanup can’t be run because we don’t get passed the test +% context with the random directory value. At the moment stop_couch/0 is not +% used anywhere, tho. Maybe we should remove it? start_couch(IniFiles, ExtraApps) -> + RandomDir = filename:join([builddir(), "tmp", "couchdb-tests", couch_uuids:random()]), + RandomEtcDir = filename:join([RandomDir, "etc"]), + RandomDataDir = ?b2l(filename:join([RandomDir, "data"])), + RandomLogFile = ?b2l(filename:join([RandomDir, "log", "couch.log"])), + + ok = filelib:ensure_path(RandomDir), + ok = filelib:ensure_path(RandomEtcDir), + ok = filelib:ensure_path(RandomDataDir), + ok = filelib:ensure_dir(RandomLogFile), + + RandomIniFiles = lists:map( + fun(SourceFile) -> + TargetFileName = lists:last(filename:split(SourceFile)), + TargetFile = filename:join([RandomEtcDir, TargetFileName]), + {ok, _} = file:copy(SourceFile, TargetFile), + ?b2l(TargetFile) + end, + IniFiles + ), load_applications_with_stats(), - ok = application:set_env(config, ini_files, IniFiles), + ok = application:set_env(config, ini_files, RandomIniFiles), Apps = start_applications(?DEFAULT_APPS ++ ExtraApps), + + ok = config:set("couchdb", "database_dir", RandomDataDir, false), + ok = config:set("couchdb", "view_index_dir", RandomDataDir, false), + ok = config:set("log", "file", RandomLogFile, false), ok = config:delete("compactions", "_default", false), - #test_context{started = Apps}. + #test_context{started = Apps, dir = RandomDir}. stop_couch() -> ok = stop_applications(?DEFAULT_APPS). -stop_couch(#test_context{started = Apps}) -> +stop_couch(#test_context{started = Apps, dir = RandomDir}) -> + file:del_dir_r(RandomDir), stop_applications(Apps); stop_couch(_) -> stop_couch(). - with_couch_server_restart(Fun) -> Servers = couch_server:names(), test_util:with_processes_restart(Servers, Fun). @@ -125,6 +164,7 @@ start_applications([App | Apps], Acc) -> stop_applications(Apps) -> [application:stop(App) || App <- lists:reverse(Apps)], + ok = application:unset_env(config, ini_files), ok. start_config(Chain) -> diff --git a/src/ddoc_cache/test/eunit/ddoc_cache_tutil.erl b/src/ddoc_cache/test/eunit/ddoc_cache_tutil.erl index 5e2efbffacd..7a860b14567 100644 --- a/src/ddoc_cache/test/eunit/ddoc_cache_tutil.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_tutil.erl @@ -32,7 +32,7 @@ start_couch() -> start_couch(Options) -> WriteDDocs = couch_util:get_value(write_ddocs, Options, true), purge_modules(), - Ctx = test_util:start_couch(?CONFIG_CHAIN, [chttpd, ddoc_cache]), + Ctx = test_util:start_couch([chttpd, ddoc_cache]), TmpDb = ?tempdb(), ok = fabric:create_db(TmpDb, [{q, "1"}, {n, "1"}]), if diff --git a/src/fabric/test/eunit/fabric_tests.erl b/src/fabric/test/eunit/fabric_tests.erl index 77327f4458a..c092f447352 100644 --- a/src/fabric/test/eunit/fabric_tests.erl +++ b/src/fabric/test/eunit/fabric_tests.erl @@ -386,7 +386,11 @@ delete_dbs(DbList) -> setup_fabric() -> Ctx = test_util:start_couch([fabric]), - ok = clear_shards_db(), + ok = + case clear_shards_db() of + ok -> ok; + not_found -> ok + end, Ctx. teardown_fabric(Ctx) -> diff --git a/src/mem3/test/eunit/mem3_reshard_changes_feed_test.erl b/src/mem3/test/eunit/mem3_reshard_changes_feed_test.erl index 140b376358c..799c0721fe4 100644 --- a/src/mem3/test/eunit/mem3_reshard_changes_feed_test.erl +++ b/src/mem3/test/eunit/mem3_reshard_changes_feed_test.erl @@ -37,7 +37,7 @@ teardown(#{} = Dbs) -> maps:map(fun(_, Db) -> delete_db(Db) end, Dbs). start_couch() -> - test_util:start_couch(?CONFIG_CHAIN, [mem3, fabric]). + test_util:start_couch([mem3, fabric]). stop_couch(Ctx) -> test_util:stop_couch(Ctx). diff --git a/src/mem3/test/eunit/mem3_reshard_test.erl b/src/mem3/test/eunit/mem3_reshard_test.erl index ec369bfe820..839e7b29319 100644 --- a/src/mem3/test/eunit/mem3_reshard_test.erl +++ b/src/mem3/test/eunit/mem3_reshard_test.erl @@ -39,7 +39,7 @@ teardown(#{} = Dbs) -> meck:unload(). start_couch() -> - test_util:start_couch(?CONFIG_CHAIN, [mem3, fabric]). + test_util:start_couch([mem3, fabric]). stop_couch(Ctx) -> test_util:stop_couch(Ctx). diff --git a/src/mem3/test/eunit/mem3_shards_test.erl b/src/mem3/test/eunit/mem3_shards_test.erl index 14f4bc08466..c853dc4d08b 100644 --- a/src/mem3/test/eunit/mem3_shards_test.erl +++ b/src/mem3/test/eunit/mem3_shards_test.erl @@ -32,7 +32,7 @@ teardown(#{dbname := DbName}) -> delete_db(DbName). start_couch() -> - test_util:start_couch(?CONFIG_CHAIN, [mem3, fabric]). + test_util:start_couch([mem3, fabric]). stop_couch(Ctx) -> test_util:stop_couch(Ctx).