diff --git a/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/util/TestInstanceHostUtils.java b/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/util/TestInstanceHostUtils.java index 4e0a16c0a6ce8219d3c52c300ae765dc911a93d4..f5ff3ea4a193489b463ec322ec8ed86b53489986 100644 --- a/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/util/TestInstanceHostUtils.java +++ b/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/util/TestInstanceHostUtils.java @@ -61,6 +61,9 @@ public class TestInstanceHostUtils } else if (projectName.equals("openbis_oai_pmh")) { return 40; + } else if (projectName.equals("test-integration")) + { + return 50; } return 80; diff --git a/test-integration/build.gradle b/test-integration/build.gradle index 38013cd2472cae0b8f55b6ab002829f4d12fa751..3f53c699ce1df1bde295b1afbf1748275c0b3051 100644 --- a/test-integration/build.gradle +++ b/test-integration/build.gradle @@ -1,5 +1,11 @@ apply from: '../build/javaproject.gradle' dependencies { - testImplementation project(':server-application-server'), project(path : ':server-application-server', configuration: 'tests') + implementation project(':lib-transactional-file-system'), project(':server-application-server'), project(path: ':server-application-server', configuration: 'tests'), project(':server-data-store') +} + +test { + // log4j1.xml is used by the application server (config location is taken from system property below) + // log4j2.xml is used by the afs server (config location taken from afs server configuration) + jvmArgs += ['-Dlog4j.configuration=etc/log4j1.xml', '-Dlog4j.configurationFile=etc/log4j1.xml'] } \ No newline at end of file diff --git a/test-integration/etc/log.xml b/test-integration/etc/log4j1.xml similarity index 86% rename from test-integration/etc/log.xml rename to test-integration/etc/log4j1.xml index b5741a11578d2d52bd40125d5f7a843d5d0d9a20..d437e47b7b8f6671b2af953f8d5b70eb1bc8158c 100644 --- a/test-integration/etc/log.xml +++ b/test-integration/etc/log4j1.xml @@ -5,7 +5,7 @@ <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d %-5p [%t] %c - %m%n"/> + <param name="ConversionPattern" value="[AS] %d %-5p [%t] %c - %m%n"/> </layout> </appender> diff --git a/test-integration/etc/log4j2.xml b/test-integration/etc/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..e5bd4c185b1c34a6139b84f242186c9ee8c9c26d --- /dev/null +++ b/test-integration/etc/log4j2.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Configuration status="INFO"> + <Appenders> + <Console name="Console" target="SYSTEM_OUT"> + <PatternLayout pattern="[AFS] %d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> + </Console> + </Appenders> + <Loggers> + <Root> + <AppenderRef ref="Console" level="info" /> + </Root> + </Loggers> +</Configuration> \ No newline at end of file diff --git a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/AbstractIntegrationTest.java b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/AbstractIntegrationTest.java index 79e2b28b39589c58b25a284d1a2d12d2a90a46e0..34d03c39ffc58e9172561fbaff3a3559cffad473 100644 --- a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/AbstractIntegrationTest.java +++ b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/AbstractIntegrationTest.java @@ -16,8 +16,8 @@ package ch.ethz.sis.openbis.systemtests; import java.lang.reflect.Method; +import java.util.List; -import org.apache.log4j.Level; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.Server; @@ -33,45 +33,44 @@ import org.springframework.web.servlet.DispatcherServlet; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; -import org.testng.annotations.BeforeTest; -import ch.systemsx.cisd.common.logging.BufferedAppender; +import ch.ethz.sis.afsserver.server.observer.impl.DummyServerObserver; +import ch.ethz.sis.afsserver.startup.AtomicFileSystemServerParameter; +import ch.ethz.sis.shared.startup.Configuration; import ch.systemsx.cisd.openbis.generic.server.util.TestInitializer; import ch.systemsx.cisd.openbis.generic.shared.util.TestInstanceHostUtils; -import ch.systemsx.cisd.openbis.util.LogRecordingUtils; /** * @author pkupczyk */ public abstract class AbstractIntegrationTest { - protected static GenericWebApplicationContext applicationContext; + protected static GenericWebApplicationContext applicationServerSpringContext; - protected BufferedAppender logAppender; + protected static TestLogger logger = new TestLogger(); + + @BeforeSuite + public void beforeSuite() throws Exception + { + TestInitializer.initWithIndex(); + startApplicationServer(); + startAfsServer(); + } @BeforeMethod public void beforeTest(Method method) { - System.out.println("BEFORE " + render(method)); - getLogAppender().resetLogContent(); + logger.log("BEFORE " + method.getDeclaringClass().getName() + "." + method.getName()); } @AfterMethod public void afterTest(Method method) { - System.out.println("AFTER " + render(method)); + logger.log("AFTER " + method.getDeclaringClass().getName() + "." + method.getName()); } - private String render(Method method) + private void startApplicationServer() throws Exception { - return method.getDeclaringClass().getName() + "." + method.getName(); - } - - @BeforeSuite - public void beforeSuite() throws Exception - { - TestInitializer.initWithIndex(); - Server server = new Server(); HttpConfiguration httpConfig = new HttpConfiguration(); ServerConnector connector = @@ -85,33 +84,27 @@ public abstract class AbstractIntegrationTest @Override protected WebApplicationContext findWebApplicationContext() { - XmlBeanFactory f = + XmlBeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("../server-application-server/resource/server/spring-servlet.xml")); - applicationContext = new GenericWebApplicationContext(f); - applicationContext.setParent(new ClassPathXmlApplicationContext("classpath:applicationContext.xml")); - applicationContext.refresh(); - return applicationContext; + applicationServerSpringContext = new GenericWebApplicationContext(beanFactory); + applicationServerSpringContext.setParent(new ClassPathXmlApplicationContext("classpath:applicationContext.xml")); + applicationServerSpringContext.refresh(); + return applicationServerSpringContext; } }; - ServletContextHandler sch = + ServletContextHandler servletContext = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS); - sch.addServlet(new ServletHolder(dispatcherServlet), "/*"); + servletContext.addServlet(new ServletHolder(dispatcherServlet), "/*"); server.start(); } - @BeforeTest - public void setUpLogAppender() + private void startAfsServer() throws Exception { - logAppender = LogRecordingUtils.createRecorder(); - } - - private BufferedAppender getLogAppender() - { - if (logAppender == null) - { - logAppender = LogRecordingUtils.createRecorder("%d %p [%t] %c - %m%n", Level.INFO); - } - return logAppender; + Configuration configuration = new Configuration(List.of(AtomicFileSystemServerParameter.class), + "../server-data-store/src/main/resources/server-data-store-config.properties"); + configuration.setProperty(AtomicFileSystemServerParameter.logConfigFile, "etc/log4j2.xml"); + DummyServerObserver dummyServerObserver = new DummyServerObserver(); + new ch.ethz.sis.afsserver.server.Server<>(configuration, dummyServerObserver, dummyServerObserver); } } diff --git a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/IntegrationTest.java b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/IntegrationTest.java index 58dcfeab246ef3ad07e397a93b552c9bc3efe5e2..ccc84698b4f11da659a23b6ebaf97afbeae7bf29 100644 --- a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/IntegrationTest.java +++ b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/IntegrationTest.java @@ -1,8 +1,12 @@ package ch.ethz.sis.openbis.systemtests; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; + import org.testng.annotations.Test; -import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi; +import ch.ethz.sis.openbis.generic.OpenBIS; +import ch.systemsx.cisd.openbis.generic.shared.util.TestInstanceHostUtils; public class IntegrationTest extends AbstractIntegrationTest { @@ -10,9 +14,27 @@ public class IntegrationTest extends AbstractIntegrationTest @Test public void helloWorld() { - IApplicationServerApi v3 = applicationContext.getBean(IApplicationServerApi.class); - String sessionToken = v3.login("test", "password"); + OpenBIS openBIS = new OpenBIS("http://localhost:" + TestInstanceHostUtils.getOpenBISPort() + "/openbis/openbis", "OLD_DSS_IS_NOT_USED", "http://localhost:8085/data-store-server"); + + String sessionToken = openBIS.login("test","password"); + + openBIS.getAfsServerFacade().write("another-sample", "anotherdir/anotherfile", 0L, "Hello World!".getBytes(StandardCharsets.UTF_8), + calculateMD5("Hello World!".getBytes(StandardCharsets.UTF_8))); + System.out.println("Session token: " + sessionToken); } + public static byte[] calculateMD5(byte[] data) + { + try + { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(data); + return md.digest(); + } catch (Exception e) + { + throw new RuntimeException("Checksum calculation failed", e); + } + } + } diff --git a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/TestLogger.java b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/TestLogger.java new file mode 100644 index 0000000000000000000000000000000000000000..9c2ea86c04e408256632a98b055842dbf4f7bff3 --- /dev/null +++ b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/TestLogger.java @@ -0,0 +1,11 @@ +package ch.ethz.sis.openbis.systemtests; + +public class TestLogger +{ + + public void log(String message) + { + System.out.println("[TEST] " + message); + } + +}