Skip to content

Commit 0db3677

Browse files
Update extension lifecycle tests
1 parent 3fb16e1 commit 0db3677

9 files changed

Lines changed: 115 additions & 13 deletions

File tree

jjava-kernel/src/test/java/org/dflib/jjava/kernel/JavaKernelExtensionsLifecycleTest.java

Lines changed: 69 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
import org.junit.jupiter.api.Test;
55

66
import java.nio.file.Path;
7+
import java.util.List;
78

89
import static org.junit.jupiter.api.Assertions.*;
9-
import static org.junit.jupiter.api.Assertions.assertEquals;
1010

11-
public class JavaKernelExtensionsLifecycleTest {
11+
class JavaKernelExtensionsLifecycleTest {
1212

1313
@Test
14-
public void defaultExtensions() {
14+
void defaultExtension() {
1515
assertNull(JavaNotebookStatics.kernel);
1616

1717
JavaKernel kernel = JavaKernel.builder().name("TestKernel").build();
@@ -28,16 +28,16 @@ public void defaultExtensions() {
2828
}
2929

3030
@Test
31-
void extraClasspathExtensions() throws Exception {
32-
Path jar = TestJarFactory.buildJar(
33-
"java/",
34-
"java/org/dflib/jjava/kernel/test/TestExtension.java",
35-
"java/META-INF/services/org.dflib.jjava.jupyter.Extension"
31+
void extraClasspathExtension() throws Exception {
32+
Path extensionJar = TestJarFactory.buildJar(
33+
"extensions/classpath/",
34+
"extensions/classpath/org/dflib/jjava/kernel/test/ExtraClasspathExtension.java",
35+
"extensions/classpath/META-INF/services/org.dflib.jjava.jupyter.Extension"
3636
);
3737

38-
String extraClasspath = PathsHandler.joinPaths(PathsHandler.resolveGlobs(jar.toAbsolutePath().toString()));
38+
String extraClasspath = PathsHandler.joinPaths(List.of(extensionJar));
3939

40-
String extInstalledProp = "ext.installs:org.dflib.jjava.kernel.test.TestExtension";
40+
String extInstalledProp = "ext.installs:org.dflib.jjava.kernel.test.ExtraClasspathExtension";
4141
System.clearProperty(extInstalledProp);
4242

4343
JavaKernel kernel = JavaKernel
@@ -62,4 +62,63 @@ void extraClasspathExtensions() throws Exception {
6262
assertNull(System.getProperty(extInstalledProp));
6363
}
6464

65+
@Test
66+
void evalExtension() throws Exception {
67+
Path extensionJar = TestJarFactory.buildJar(
68+
"extensions/eval/",
69+
"extensions/eval/org/dflib/jjava/kernel/test/EvalExtension.java",
70+
"extensions/eval/META-INF/services/org.dflib.jjava.jupyter.Extension"
71+
);
72+
73+
String extraClasspath = PathsHandler.joinPaths(List.of(extensionJar));
74+
75+
JavaKernel kernel = JavaKernel
76+
.builder()
77+
.name("TestKernel")
78+
.build();
79+
try {
80+
kernel.onStartup();
81+
kernel.addToClasspath(extraClasspath);
82+
83+
Object installed = kernel.evalRaw("evalExtensionInstalled");
84+
assertEquals(true, installed, "EvalExtension should have been installed");
85+
86+
Object result = kernel.evalRaw("evalValue");
87+
assertEquals("Test message", result.toString(), "eval() call was not successful");
88+
} finally {
89+
kernel.onShutdown(false);
90+
}
91+
}
92+
93+
@Test
94+
void libraryExtension() throws Exception {
95+
Path libraryJar = TestJarFactory.buildJar(
96+
"extensions/library/",
97+
"extensions/library/org/dflib/jjava/kernel/test/TestLibraryClass.java"
98+
);
99+
Path extensionJar = TestJarFactory.buildJar(
100+
"extensions/library/",
101+
"extensions/library/org/dflib/jjava/kernel/test/ExternalLibraryExtension.java",
102+
"extensions/library/META-INF/services/org.dflib.jjava.jupyter.Extension"
103+
);
104+
105+
String extraClasspath = PathsHandler.joinPaths(List.of(libraryJar, extensionJar));
106+
107+
JavaKernel kernel = JavaKernel
108+
.builder()
109+
.name("TestKernel")
110+
.build();
111+
try {
112+
kernel.onStartup();
113+
kernel.addToClasspath(extraClasspath);
114+
115+
Object installed = kernel.evalRaw("externalLibraryExtensionInstalled");
116+
assertEquals(true, installed, "ExternalLibraryExtension should have been installed");
117+
118+
Object result = kernel.evalRaw("externalLibraryValue");
119+
assertEquals("Test message", result.toString(), "Library class method call was not successful");
120+
} finally {
121+
kernel.onShutdown(false);
122+
}
123+
}
65124
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.dflib.jjava.kernel.test.ExtraClasspathExtension

jjava-kernel/src/test/resources/java/org/dflib/jjava/kernel/test/TestExtension.java renamed to jjava-kernel/src/test/resources/extensions/classpath/org/dflib/jjava/kernel/test/ExtraClasspathExtension.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import org.dflib.jjava.jupyter.Extension;
44
import org.dflib.jjava.jupyter.kernel.BaseKernel;
5-
import org.dflib.jjava.kernel.JavaNotebookStatics;
65

7-
public class TestExtension implements Extension {
6+
public class ExtraClasspathExtension implements Extension {
87

98
@Override
109
public void install(BaseKernel kernel) {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.dflib.jjava.kernel.test.EvalExtension
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.dflib.jjava.kernel.test;
2+
3+
import org.dflib.jjava.jupyter.Extension;
4+
import org.dflib.jjava.jupyter.kernel.BaseKernel;
5+
6+
public class EvalExtension implements Extension {
7+
8+
@Override
9+
public void install(BaseKernel kernel) {
10+
kernel.eval("var evalValue = \"Test message\";");
11+
kernel.eval("var evalExtensionInstalled = true;");
12+
}
13+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.dflib.jjava.kernel.test.ExternalLibraryExtension
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.dflib.jjava.kernel.test;
2+
3+
import org.dflib.jjava.jupyter.Extension;
4+
import org.dflib.jjava.jupyter.kernel.BaseKernel;
5+
6+
public class ExternalLibraryExtension implements Extension {
7+
8+
@Override
9+
public void install(BaseKernel kernel) {
10+
Object value;
11+
try {
12+
Class<?> libClass = Class.forName("org.dflib.jjava.kernel.test.TestLibraryClass");
13+
value = libClass.getMethod("getMessage").invoke(null);
14+
} catch (ReflectiveOperationException e) {
15+
throw new RuntimeException(e);
16+
}
17+
18+
kernel.eval("var externalLibraryValue = \"" + value + "\";");
19+
kernel.eval("var externalLibraryExtensionInstalled = true;");
20+
}
21+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.dflib.jjava.kernel.test;
2+
3+
public class TestLibraryClass {
4+
5+
public static String getMessage() {
6+
return "Test message";
7+
}
8+
}

jjava-kernel/src/test/resources/java/META-INF/services/org.dflib.jjava.jupyter.Extension

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)