From 0ba5341cdd4094212afc0c480593616c75771d0f Mon Sep 17 00:00:00 2001 From: Hubert Plociniczak Date: Wed, 5 Mar 2025 16:59:26 +0100 Subject: [PATCH 1/6] Run ENSO_CLOUD tests with native-image (#12384) * Run ENSO_CLOUD tests with native-image Having the test would like discover #12379 early. AOT and JVM modes generate the same result therefore it doesn't make sense to duplicate runs. * lint * revert accidental change --- build_tools/build/src/enso.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/build_tools/build/src/enso.rs b/build_tools/build/src/enso.rs index bdfc21585265..357c17f97b49 100644 --- a/build_tools/build/src/enso.rs +++ b/build_tools/build/src/enso.rs @@ -248,6 +248,7 @@ impl BuiltEnso { cloud_tests::env::test_controls::ENSO_RUN_REAL_CLOUD_TEST.name().to_string(), "1".to_string(), )); + environment_overrides.push(("ENSO_LAUNCHER".to_string(), "native".to_string())); }; let futures = std_tests.into_iter().map(|test_path| { From 49f16706b0c6c22647efeb6adc4a8469b0717257 Mon Sep 17 00:00:00 2001 From: Gregory Travis Date: Wed, 5 Mar 2025 15:53:39 -0500 Subject: [PATCH 2/6] api --- distribution/lib/Standard/Test/0.0.0-dev/docs/api/Bench.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/distribution/lib/Standard/Test/0.0.0-dev/docs/api/Bench.md b/distribution/lib/Standard/Test/0.0.0-dev/docs/api/Bench.md index 7c449c606119..8270c2c5fc49 100644 --- a/distribution/lib/Standard/Test/0.0.0-dev/docs/api/Bench.md +++ b/distribution/lib/Standard/Test/0.0.0-dev/docs/api/Bench.md @@ -3,7 +3,7 @@ - type Bench - All groups:(Standard.Base.Data.Vector.Vector Standard.Test.Bench.Bench) - Group name:Standard.Base.Data.Text.Text configuration:Standard.Test.Bench.Bench_Options specs:(Standard.Base.Data.Vector.Vector Standard.Test.Bench.Bench) - - Spec name:Standard.Base.Data.Text.Text code:Standard.Base.Any.Any + - Spec name:Standard.Base.Data.Text.Text code:Standard.Base.Any.Any setup:(Standard.Base.Any.Any|Standard.Base.Nothing.Nothing) teardown:(Standard.Base.Any.Any|Standard.Base.Nothing.Nothing) - build fn:Standard.Base.Any.Any -> Standard.Base.Any.Any - estimated_runtime self -> Standard.Base.Any.Any - fold self value:Standard.Base.Any.Any fn:Standard.Base.Any.Any -> Standard.Base.Any.Any @@ -27,7 +27,7 @@ - validate self -> Standard.Base.Any.Any - type Group_Builder - Impl name:Standard.Base.Any.Any builder:Standard.Base.Any.Any - - specify self name:Standard.Base.Data.Text.Text ~benchmark:Standard.Base.Any.Any -> Standard.Base.Any.Any + - specify self name:Standard.Base.Data.Text.Text ~benchmark:Standard.Base.Any.Any ~setup:Standard.Base.Any.Any= ~teardown:Standard.Base.Any.Any= -> Standard.Base.Any.Any - type Phase_Conf - Impl iterations:Standard.Base.Data.Numbers.Integer seconds:Standard.Base.Data.Numbers.Integer - to_text self -> Standard.Base.Any.Any From 048dea5236bf2a6d172daab782e163919c8628ea Mon Sep 17 00:00:00 2001 From: Hubert Plociniczak Date: Wed, 5 Mar 2025 22:42:05 +0100 Subject: [PATCH 3/6] Fix dependencies on `library-manager` (#12419) * Fix deps on `library-manager` Only tests should depend on logging setup, for test purposes. Fixes ClassNotFoundException: ``` [info] LibraryDownloadTest: [info] DownloadingLibraryCache SLF4J(I): Attempting to load provider "org.enso.logging.service.logback.test.provider.TestLogProvider" specified via "slf4j.provider" system propertyTests 0s SLF4J(E): Failed to instantiate the specified SLF4JServiceProvider (org.enso.logging.service.logback.test.provider.TestLogProvider) SLF4J(E): Reported exception: java.lang.ClassNotFoundException: org.enso.logging.service.logback.test.provider.TestLogProvider at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) at org.slf4j.LoggerFactory.loadExplicitlySpecified(LoggerFactory.java:226) at org.slf4j.LoggerFactory.findServiceProviders(LoggerFactory.java:122) ``` * Drop `library-manager-test` Replaced by setting dependencies between projects appropriately using classifiers. --- build.sbt | 51 ++++--------------- .../src/test/resources/application-test.conf | 0 .../repository/LibraryDownloadTest.scala | 0 .../published/repository/DownloaderTest.scala | 0 .../repository/DummyRepository.scala | 0 .../repository/EmptyRepository.scala | 0 .../repository/ExampleRepository.scala | 0 .../libraryupload/LibraryUploadTest.scala | 0 8 files changed, 10 insertions(+), 41 deletions(-) rename lib/scala/{library-manager-test => library-manager}/src/test/resources/application-test.conf (100%) rename lib/scala/{library-manager-test => library-manager}/src/test/scala/org/enso/librarymanager/published/repository/LibraryDownloadTest.scala (100%) rename lib/scala/{library-manager-test/src/main => library-manager/src/test}/scala/org/enso/librarymanager/test/published/repository/DownloaderTest.scala (100%) rename lib/scala/{library-manager-test/src/main => library-manager/src/test}/scala/org/enso/librarymanager/test/published/repository/DummyRepository.scala (100%) rename lib/scala/{library-manager-test/src/main => library-manager/src/test}/scala/org/enso/librarymanager/test/published/repository/EmptyRepository.scala (100%) rename lib/scala/{library-manager-test/src/main => library-manager/src/test}/scala/org/enso/librarymanager/test/published/repository/ExampleRepository.scala (100%) rename lib/scala/{library-manager-test => library-manager}/src/test/scala/org/enso/libraryupload/LibraryUploadTest.scala (100%) diff --git a/build.sbt b/build.sbt index 5a886894a00f..a34180c0e8f9 100644 --- a/build.sbt +++ b/build.sbt @@ -332,7 +332,6 @@ lazy val enso = (project in file(".")) `language-server-deps-wrapper`, launcher, `library-manager`, - `library-manager-test`, `locking-test-helper`, `logging-config`, `logging-service`, @@ -2499,7 +2498,7 @@ lazy val `language-server` = (project in file("engine/language-server")) .dependsOn(filewatcher) .dependsOn(testkit % Test) .dependsOn(`logging-service-logback` % "test->test") - .dependsOn(`library-manager-test` % Test) + .dependsOn(`library-manager` % "test->test") .dependsOn(`runtime-version-manager-test` % Test) .dependsOn(`ydoc-polyfill`) @@ -4478,7 +4477,7 @@ lazy val `edition-updater` = project .dependsOn(editions) .dependsOn(downloader) .dependsOn(`distribution-manager`) - .dependsOn(`library-manager-test` % Test) + .dependsOn(`library-manager` % "test->test") lazy val `edition-uploader` = project .in(file("lib/scala/edition-uploader")) @@ -4518,50 +4517,20 @@ lazy val `library-manager` = project (`logging-utils` / Compile / exportedModule).value, (`scala-libs-wrapper` / Compile / exportedModule).value, (`scala-yaml` / Compile / exportedModule).value - ) + ), + commands += WithDebugCommand.withDebug, + Test / javaOptions ++= testLogProviderOptions, + Test / test := (Test / test).tag(simpleLibraryServerTag).value, + Test / fork := true ) .dependsOn(`version-output`) // Note [Default Editions] .dependsOn(editions) .dependsOn(cli) .dependsOn(`distribution-manager`) .dependsOn(downloader) - .dependsOn(testkit % Test) - -lazy val `library-manager-test` = project - .in(file("lib/scala/library-manager-test")) - .enablePlugins(JPMSPlugin) - .configs(Test) - .settings( - frgaalJavaCompilerSetting, - scalaModuleDependencySetting, - compileOrder := CompileOrder.ScalaThenJava, - Test / fork := true, - commands += WithDebugCommand.withDebug, - Test / javaOptions ++= testLogProviderOptions, - Test / test := (Test / test).tag(simpleLibraryServerTag).value, - libraryDependencies ++= Seq( - "com.typesafe.scala-logging" %% "scala-logging" % scalaLoggingVersion, - "org.scalatest" %% "scalatest" % scalatestVersion % Test - ), - Compile / internalModuleDependencies := Seq( - (`library-manager` / Compile / exportedModule).value, - (`cli` / Compile / exportedModule).value, - (`distribution-manager` / Compile / exportedModule).value, - (`library-manager` / Compile / exportedModule).value, - (`process-utils` / Compile / exportedModule).value, - (`pkg` / Compile / exportedModule).value, - (`semver` / Compile / exportedModule).value, - (`downloader` / Compile / exportedModule).value, - (`editions` / Compile / exportedModule).value, - (`version-output` / Compile / exportedModule).value, - (`testkit` / Compile / exportedModule).value - ) - ) - .dependsOn(`library-manager`) - .dependsOn(`process-utils`) - .dependsOn(`logging-utils`) - .dependsOn(testkit) - .dependsOn(`logging-service-logback` % Test) + .dependsOn(testkit % "test->test") + .dependsOn(`process-utils` % "test->compile") + .dependsOn(`logging-service-logback` % "test->test") lazy val `connected-lock-manager` = project .in(file("lib/scala/connected-lock-manager")) diff --git a/lib/scala/library-manager-test/src/test/resources/application-test.conf b/lib/scala/library-manager/src/test/resources/application-test.conf similarity index 100% rename from lib/scala/library-manager-test/src/test/resources/application-test.conf rename to lib/scala/library-manager/src/test/resources/application-test.conf diff --git a/lib/scala/library-manager-test/src/test/scala/org/enso/librarymanager/published/repository/LibraryDownloadTest.scala b/lib/scala/library-manager/src/test/scala/org/enso/librarymanager/published/repository/LibraryDownloadTest.scala similarity index 100% rename from lib/scala/library-manager-test/src/test/scala/org/enso/librarymanager/published/repository/LibraryDownloadTest.scala rename to lib/scala/library-manager/src/test/scala/org/enso/librarymanager/published/repository/LibraryDownloadTest.scala diff --git a/lib/scala/library-manager-test/src/main/scala/org/enso/librarymanager/test/published/repository/DownloaderTest.scala b/lib/scala/library-manager/src/test/scala/org/enso/librarymanager/test/published/repository/DownloaderTest.scala similarity index 100% rename from lib/scala/library-manager-test/src/main/scala/org/enso/librarymanager/test/published/repository/DownloaderTest.scala rename to lib/scala/library-manager/src/test/scala/org/enso/librarymanager/test/published/repository/DownloaderTest.scala diff --git a/lib/scala/library-manager-test/src/main/scala/org/enso/librarymanager/test/published/repository/DummyRepository.scala b/lib/scala/library-manager/src/test/scala/org/enso/librarymanager/test/published/repository/DummyRepository.scala similarity index 100% rename from lib/scala/library-manager-test/src/main/scala/org/enso/librarymanager/test/published/repository/DummyRepository.scala rename to lib/scala/library-manager/src/test/scala/org/enso/librarymanager/test/published/repository/DummyRepository.scala diff --git a/lib/scala/library-manager-test/src/main/scala/org/enso/librarymanager/test/published/repository/EmptyRepository.scala b/lib/scala/library-manager/src/test/scala/org/enso/librarymanager/test/published/repository/EmptyRepository.scala similarity index 100% rename from lib/scala/library-manager-test/src/main/scala/org/enso/librarymanager/test/published/repository/EmptyRepository.scala rename to lib/scala/library-manager/src/test/scala/org/enso/librarymanager/test/published/repository/EmptyRepository.scala diff --git a/lib/scala/library-manager-test/src/main/scala/org/enso/librarymanager/test/published/repository/ExampleRepository.scala b/lib/scala/library-manager/src/test/scala/org/enso/librarymanager/test/published/repository/ExampleRepository.scala similarity index 100% rename from lib/scala/library-manager-test/src/main/scala/org/enso/librarymanager/test/published/repository/ExampleRepository.scala rename to lib/scala/library-manager/src/test/scala/org/enso/librarymanager/test/published/repository/ExampleRepository.scala diff --git a/lib/scala/library-manager-test/src/test/scala/org/enso/libraryupload/LibraryUploadTest.scala b/lib/scala/library-manager/src/test/scala/org/enso/libraryupload/LibraryUploadTest.scala similarity index 100% rename from lib/scala/library-manager-test/src/test/scala/org/enso/libraryupload/LibraryUploadTest.scala rename to lib/scala/library-manager/src/test/scala/org/enso/libraryupload/LibraryUploadTest.scala From 76ae9a1e8067a81982c7a24af6a3530782a517b8 Mon Sep 17 00:00:00 2001 From: Hubert Plociniczak Date: Thu, 6 Mar 2025 10:41:10 +0100 Subject: [PATCH 4/6] Pass ENSO_LAUNCHER in docker, if present (#12418) Passing `ENSO_LAUNCHER=native` will use native image for language server. --- tools/ci/docker/engine/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/ci/docker/engine/Dockerfile b/tools/ci/docker/engine/Dockerfile index c2e6f3c16325..48484d7ed542 100755 --- a/tools/ci/docker/engine/Dockerfile +++ b/tools/ci/docker/engine/Dockerfile @@ -10,6 +10,7 @@ ARG PRINT_VERSION=0 ARG JAVA_OPTS="-XX:MaxRAMPercentage=90.0 -XX:InitialRAMPercentage=90.0" ARG PROFILING_FILENAME ARG PROFILING_TIME +ARG ENSO_LAUNCHER RUN useradd -u 2000 -c 'Enso Developer' -U -m ensodev @@ -65,6 +66,7 @@ ENV YDOC_PORT=${YDOC_PORT} ENV LOG_LEVEL=${LOG_LEVEL} ENV PRINT_VERSION=${PRINT_VERSION} ENV JAVA_OPTS=${JAVA_OPTS} +ENV ENSO_LAUNCHER=${ENSO_LAUNCHER} EXPOSE ${RPC_PORT} EXPOSE ${DATA_PORT} From 0ef479b49c7e03e588b0b4b4623daf20a9481492 Mon Sep 17 00:00:00 2001 From: Sergei Garin Date: Thu, 6 Mar 2025 13:37:25 +0300 Subject: [PATCH 5/6] Fix logout (#12399) --- .../src/dashboard/providers/SessionProvider.tsx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/gui/src/dashboard/providers/SessionProvider.tsx b/app/gui/src/dashboard/providers/SessionProvider.tsx index 78dfda470757..4fbec03cd332 100644 --- a/app/gui/src/dashboard/providers/SessionProvider.tsx +++ b/app/gui/src/dashboard/providers/SessionProvider.tsx @@ -115,9 +115,9 @@ export default function SessionProvider(props: SessionProviderProps) { const queryClient = reactQuery.useQueryClient() const toastAndLog = useToastAndLog() - const sessionQuery = createSessionQuery(authService) + const sessionQueryOptions = createSessionQuery(authService) - const session = reactQuery.useSuspenseQuery(sessionQuery) + const session = reactQuery.useSuspenseQuery(sessionQueryOptions) const refreshUserSessionMutation = reactQuery.useMutation({ mutationKey: ['refreshUserSession', { expireAt: session.data?.expireAt }], @@ -126,12 +126,12 @@ export default function SessionProvider(props: SessionProviderProps) { if (data) { httpClient?.setSessionToken(data.accessToken) } - return queryClient.invalidateQueries({ queryKey: sessionQuery.queryKey }) + return queryClient.invalidateQueries({ queryKey: sessionQueryOptions.queryKey }) }, onError: (error) => { // Something went wrong with the refresh token, so we need to sign the user out. toastAndLog('sessionExpiredError', error) - queryClient.setQueryData(sessionQuery.queryKey, null) + queryClient.setQueryData(sessionQueryOptions.queryKey, null) return logoutMutation.mutateAsync() }, }) @@ -162,6 +162,7 @@ export default function SessionProvider(props: SessionProviderProps) { void queryClient.clearWithPersister() }, onError: () => toast.error(getText('signOutError')), + meta: { invalidates: [sessionQueryOptions.queryKey], awaitInvalidates: true }, }) const signUp = useEventCallback( @@ -209,7 +210,7 @@ export default function SessionProvider(props: SessionProviderProps) { } return queryClient - .invalidateQueries({ queryKey: sessionQuery.queryKey }) + .invalidateQueries({ queryKey: sessionQueryOptions.queryKey }) .then(() => ({ challenge, user }) as const) } else { throw new Error(result.val.message) @@ -282,7 +283,7 @@ export default function SessionProvider(props: SessionProviderProps) { switch (event) { case listen.AuthEvent.signIn: case listen.AuthEvent.signOut: { - void queryClient.invalidateQueries({ queryKey: sessionQuery.queryKey }) + void queryClient.invalidateQueries({ queryKey: sessionQueryOptions.queryKey }) break } case listen.AuthEvent.customOAuthState: @@ -293,7 +294,7 @@ export default function SessionProvider(props: SessionProviderProps) { // will not work. // See https://github.com/aws-amplify/amplify-js/issues/3391#issuecomment-756473970 history.replaceState({}, '', mainPageUrl) - void queryClient.invalidateQueries({ queryKey: sessionQuery.queryKey }) + void queryClient.invalidateQueries({ queryKey: sessionQueryOptions.queryKey }) break } default: { @@ -301,7 +302,7 @@ export default function SessionProvider(props: SessionProviderProps) { } } }), - [registerAuthEventListener, mainPageUrl, queryClient, sessionQuery.queryKey], + [registerAuthEventListener, mainPageUrl, queryClient, sessionQueryOptions.queryKey], ) const organizationId = useEventCallback(() => authService.organizationId()) From a2f2f87a7a86626505fe0887937cccfe65166e10 Mon Sep 17 00:00:00 2001 From: Gregory Travis Date: Thu, 6 Mar 2025 11:11:06 -0500 Subject: [PATCH 6/6] wip --- test/Benchmarks/src/Main.enso | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Benchmarks/src/Main.enso b/test/Benchmarks/src/Main.enso index 0b4f0600ae57..683222f9676e 100644 --- a/test/Benchmarks/src/Main.enso +++ b/test/Benchmarks/src/Main.enso @@ -127,7 +127,7 @@ main filter=Nothing = vec = specs.map filter_benchmarks . filter no_nothing if vec.is_empty then Nothing else Bench.Group n opts vec - Bench.Spec n _ -> + Bench.Spec n _ _ _ -> if is_matching n then b else Nothing all_benchmarks.map filter_benchmarks . filter no_nothing