Skip to content
Snippets Groups Projects
Commit 66744387 authored by pkupczyk's avatar pkupczyk
Browse files

SSDM-3768 : more tests and bugfixes

SVN: 37424
parent 80b6654d
No related branches found
No related tags found
No related merge requests found
Showing
with 69 additions and 25 deletions
...@@ -64,7 +64,8 @@ public class OperationExecutionDBStoreDAO implements IOperationExecutionDBStoreD ...@@ -64,7 +64,8 @@ public class OperationExecutionDBStoreDAO implements IOperationExecutionDBStoreD
"update OperationExecutionPE set summaryProgress = :progress where code = :code and state in (:states) and summaryAvailability = 'AVAILABLE'"); "update OperationExecutionPE set summaryProgress = :progress where code = :code and state in (:states) and summaryAvailability = 'AVAILABLE'");
query.setParameter("code", code); query.setParameter("code", code);
query.setParameter("progress", progress); query.setParameter("progress", progress);
query.setParameterList("states", Arrays.asList(OperationExecutionState.RUNNING, OperationExecutionState.FAILED)); query.setParameterList("states",
Arrays.asList(OperationExecutionState.RUNNING, OperationExecutionState.FAILED, OperationExecutionState.FINISHED));
query.executeUpdate(); query.executeUpdate();
} }
......
...@@ -38,7 +38,7 @@ public class AsynchronousOperationExecutorTest ...@@ -38,7 +38,7 @@ public class AsynchronousOperationExecutorTest
private IOperationExecutionStore executionStore; private IOperationExecutionStore executionStore;
private IOperationsExecutor operationsExecutor; private IAsynchronousOperationThreadPoolExecutor poolExecutor;
private IOperationContext context1; private IOperationContext context1;
...@@ -71,7 +71,7 @@ public class AsynchronousOperationExecutorTest ...@@ -71,7 +71,7 @@ public class AsynchronousOperationExecutorTest
executionConfig = mockery.mock(IOperationExecutionConfig.class); executionConfig = mockery.mock(IOperationExecutionConfig.class);
executionIdFactory = mockery.mock(IOperationExecutionIdFactory.class); executionIdFactory = mockery.mock(IOperationExecutionIdFactory.class);
executionStore = mockery.mock(IOperationExecutionStore.class); executionStore = mockery.mock(IOperationExecutionStore.class);
operationsExecutor = mockery.mock(IOperationsExecutor.class); poolExecutor = mockery.mock(IAsynchronousOperationThreadPoolExecutor.class);
context1 = mockery.mock(IOperationContext.class, "context1"); context1 = mockery.mock(IOperationContext.class, "context1");
context2 = mockery.mock(IOperationContext.class, "context2"); context2 = mockery.mock(IOperationContext.class, "context2");
...@@ -118,7 +118,7 @@ public class AsynchronousOperationExecutorTest ...@@ -118,7 +118,7 @@ public class AsynchronousOperationExecutorTest
oneOf(executionStore).executionScheduled(context1, executionId); oneOf(executionStore).executionScheduled(context1, executionId);
oneOf(executionStore).executionRunning(context1, executionId); oneOf(executionStore).executionRunning(context1, executionId);
oneOf(operationsExecutor).execute(context1, operations1); oneOf(poolExecutor).execute(context1, executionId, operations1);
will(returnValue(operationResults1)); will(returnValue(operationResults1));
oneOf(executionStore).executionFinished(context1, executionId, operationResults1); oneOf(executionStore).executionFinished(context1, executionId, operationResults1);
...@@ -150,7 +150,7 @@ public class AsynchronousOperationExecutorTest ...@@ -150,7 +150,7 @@ public class AsynchronousOperationExecutorTest
oneOf(executionStore).executionScheduled(context1, executionId1); oneOf(executionStore).executionScheduled(context1, executionId1);
oneOf(executionStore).executionRunning(context1, executionId1); oneOf(executionStore).executionRunning(context1, executionId1);
oneOf(operationsExecutor).execute(context1, operations1); oneOf(poolExecutor).execute(context1, executionId1, operations1);
will(throwException(exception)); will(throwException(exception));
oneOf(executionStore).executionFailed(context1, executionId1, new OperationExecutionError(exception)); oneOf(executionStore).executionFailed(context1, executionId1, new OperationExecutionError(exception));
...@@ -265,7 +265,7 @@ public class AsynchronousOperationExecutorTest ...@@ -265,7 +265,7 @@ public class AsynchronousOperationExecutorTest
oneOf(executionStore).executionScheduled(context1, executionId1); oneOf(executionStore).executionScheduled(context1, executionId1);
oneOf(executionStore).executionRunning(context1, executionId1); oneOf(executionStore).executionRunning(context1, executionId1);
oneOf(operationsExecutor).execute(context1, operations1); oneOf(poolExecutor).execute(context1, executionId1, operations1);
will(returnValue(operationResults1)); will(returnValue(operationResults1));
oneOf(executionStore).executionFinished(context1, executionId1, operationResults1); oneOf(executionStore).executionFinished(context1, executionId1, operationResults1);
...@@ -333,7 +333,7 @@ public class AsynchronousOperationExecutorTest ...@@ -333,7 +333,7 @@ public class AsynchronousOperationExecutorTest
oneOf(executionStore).executionRunning(context1, executionId1); oneOf(executionStore).executionRunning(context1, executionId1);
will(new SendChannelMessageAction(executionChannel, "1_running")); will(new SendChannelMessageAction(executionChannel, "1_running"));
oneOf(operationsExecutor).execute(context1, operations1); oneOf(poolExecutor).execute(context1, executionId1, operations1);
will(new TestAction() will(new TestAction()
{ {
@Override @Override
...@@ -366,7 +366,7 @@ public class AsynchronousOperationExecutorTest ...@@ -366,7 +366,7 @@ public class AsynchronousOperationExecutorTest
oneOf(executionStore).executionRunning(context2, executionId2); oneOf(executionStore).executionRunning(context2, executionId2);
will(new SendChannelMessageAction(executionChannel, "2_running")); will(new SendChannelMessageAction(executionChannel, "2_running"));
oneOf(operationsExecutor).execute(context2, operations2); oneOf(poolExecutor).execute(context2, executionId2, operations2);
will(new TestAction() will(new TestAction()
{ {
@Override @Override
...@@ -439,7 +439,7 @@ public class AsynchronousOperationExecutorTest ...@@ -439,7 +439,7 @@ public class AsynchronousOperationExecutorTest
oneOf(executionStore).executionRunning(context1, executionId1); oneOf(executionStore).executionRunning(context1, executionId1);
will(new SendChannelMessageAction(executionChannel, "1_running")); will(new SendChannelMessageAction(executionChannel, "1_running"));
oneOf(operationsExecutor).execute(context1, operations1); oneOf(poolExecutor).execute(context1, executionId1, operations1);
will(new TestAction() will(new TestAction()
{ {
@Override @Override
...@@ -472,7 +472,7 @@ public class AsynchronousOperationExecutorTest ...@@ -472,7 +472,7 @@ public class AsynchronousOperationExecutorTest
oneOf(executionStore).executionRunning(context2, executionId2); oneOf(executionStore).executionRunning(context2, executionId2);
will(new SendChannelMessageAction(executionChannel, "2_running")); will(new SendChannelMessageAction(executionChannel, "2_running"));
oneOf(operationsExecutor).execute(context2, operations2); oneOf(poolExecutor).execute(context2, executionId2, operations2);
will(new TestAction() will(new TestAction()
{ {
@Override @Override
...@@ -537,7 +537,6 @@ public class AsynchronousOperationExecutorTest ...@@ -537,7 +537,6 @@ public class AsynchronousOperationExecutorTest
private AsynchronousOperationExecutor createExecutor() private AsynchronousOperationExecutor createExecutor()
{ {
AsynchronousOperationThreadPoolExecutor poolExecutor = new AsynchronousOperationThreadPoolExecutor(operationsExecutor);
AsynchronousOperationExecutor executor = new AsynchronousOperationExecutor(executionConfig, executionIdFactory, executionStore, poolExecutor); AsynchronousOperationExecutor executor = new AsynchronousOperationExecutor(executionConfig, executionIdFactory, executionStore, poolExecutor);
executors.add(executor); executors.add(executor);
return executor; return executor;
......
...@@ -33,6 +33,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.operation.IOperationExecu ...@@ -33,6 +33,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.operation.IOperationExecu
import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.operation.IOperationResult; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.operation.IOperationResult;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecution; import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecution;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecutionDetails; import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecutionDetails;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecutionEmailNotification;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecutionState; import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecutionState;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecutionSummary; import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.OperationExecutionSummary;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.SynchronousOperationExecutionOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.SynchronousOperationExecutionOptions;
...@@ -187,7 +188,7 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest ...@@ -187,7 +188,7 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest
} }
@Test @Test
public void testGetWithSummary() public void testGetWithSummary() throws Exception
{ {
String sessionToken = v3api.login(TEST_USER, PASSWORD); String sessionToken = v3api.login(TEST_USER, PASSWORD);
...@@ -196,31 +197,34 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest ...@@ -196,31 +197,34 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest
List<? extends IOperation> operations = Arrays.asList(new CreateSpacesOperation(creation)); List<? extends IOperation> operations = Arrays.asList(new CreateSpacesOperation(creation));
SynchronousOperationExecutionOptions options = new SynchronousOperationExecutionOptions(); SynchronousOperationExecutionOptions options = new SynchronousOperationExecutionOptions();
options.setNotification(new OperationExecutionEmailNotification("test1@email.com", "test2@email.com"));
options.setExecutionId(new OperationExecutionPermId()); options.setExecutionId(new OperationExecutionPermId());
v3api.executeOperations(sessionToken, operations, options); v3api.executeOperations(sessionToken, operations, options);
OperationExecutionFetchOptions fo = new OperationExecutionFetchOptions(); OperationExecutionFetchOptions fo = new OperationExecutionFetchOptions();
fo.withNotification();
fo.withSummary(); fo.withSummary();
fo.withSummary().withOperations(); fo.withSummary().withOperations();
fo.withSummary().withProgress(); fo.withSummary().withProgress();
fo.withSummary().withError(); fo.withSummary().withError();
fo.withSummary().withResults(); fo.withSummary().withResults();
// wait to make sure the progress information gets updated
Thread.sleep(config.getProgressInterval() * 1000);
OperationExecution execution = getExecution(sessionToken, options.getExecutionId(), fo); OperationExecution execution = getExecution(sessionToken, options.getExecutionId(), fo);
assertNotNull(execution); assertNotNull(execution);
assertEquals(((OperationExecutionEmailNotification) execution.getNotification()).getEmails(),
((OperationExecutionEmailNotification) options.getNotification()).getEmails());
OperationExecutionSummary summary = execution.getSummary(); OperationExecutionSummary summary = execution.getSummary();
assertEquals(summary.getOperations().size(), 1); assertEquals(summary.getOperations().size(), 1);
assertEquals(summary.getOperations().get(0), "CreateSpacesOperation 1 creation(s)"); assertEquals(summary.getOperations().get(0), "CreateSpacesOperation 1 creation(s)");
AssertionUtil.assertContains("checking access (1/1)", summary.getProgress());
// reported by a separate thread
if (summary.getProgress() != null)
{
AssertionUtil.assertContains("checking access (1/1)", summary.getProgress());
}
assertEquals(summary.getError(), null); assertEquals(summary.getError(), null);
assertEquals(summary.getResults().size(), 1); assertEquals(summary.getResults().size(), 1);
...@@ -243,6 +247,7 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest ...@@ -243,6 +247,7 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest
List<? extends IOperation> operationsBefore = Arrays.asList(operationBefore); List<? extends IOperation> operationsBefore = Arrays.asList(operationBefore);
SynchronousOperationExecutionOptions options = new SynchronousOperationExecutionOptions(); SynchronousOperationExecutionOptions options = new SynchronousOperationExecutionOptions();
options.setNotification(new OperationExecutionEmailNotification("test1@email.com", "test2@email.com"));
options.setExecutionId(new OperationExecutionPermId()); options.setExecutionId(new OperationExecutionPermId());
// executeOperations // executeOperations
...@@ -254,6 +259,7 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest ...@@ -254,6 +259,7 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest
// getExecution // getExecution
OperationExecutionFetchOptions fo = new OperationExecutionFetchOptions(); OperationExecutionFetchOptions fo = new OperationExecutionFetchOptions();
fo.withNotification();
fo.withDetails(); fo.withDetails();
fo.withDetails().withOperations(); fo.withDetails().withOperations();
fo.withDetails().withProgress(); fo.withDetails().withProgress();
...@@ -261,13 +267,15 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest ...@@ -261,13 +267,15 @@ public class GetOperationExecutionTest extends AbstractOperationExecutionTest
fo.withDetails().withResults(); fo.withDetails().withResults();
// wait to make sure the progress information gets updated // wait to make sure the progress information gets updated
Thread.sleep(config.getProgressInterval() * 1000); Thread.sleep(config.getProgressInterval() * 1000);
OperationExecution execution = getExecution(sessionToken, options.getExecutionId(), fo); OperationExecution execution = getExecution(sessionToken, options.getExecutionId(), fo);
assertNotNull(execution); assertNotNull(execution);
assertEquals(((OperationExecutionEmailNotification) execution.getNotification()).getEmails(),
((OperationExecutionEmailNotification) options.getNotification()).getEmails());
OperationExecutionDetails details = execution.getDetails(); OperationExecutionDetails details = execution.getDetails();
// check operations // check operations
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package ch.ethz.sis.openbis.generic.asapi.v3.dto.common.fetchoptions; package ch.ethz.sis.openbis.generic.asapi.v3.dto.common.fetchoptions;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -24,8 +25,10 @@ import java.util.Set; ...@@ -24,8 +25,10 @@ import java.util.Set;
/** /**
* @author jakubs * @author jakubs
*/ */
public class FetchOptionsToStringBuilder public class FetchOptionsToStringBuilder implements Serializable
{ {
private static final long serialVersionUID = 1L;
private String name; private String name;
private FetchOptions<?> mainFetchOptions; private FetchOptions<?> mainFetchOptions;
......
...@@ -16,14 +16,17 @@ ...@@ -16,14 +16,17 @@
package ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search; package ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search;
import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
/** /**
* @author pkupczyk * @author pkupczyk
*/ */
public class SearchCriteriaToStringBuilder public class SearchCriteriaToStringBuilder implements Serializable
{ {
private static final long serialVersionUID = 1L;
private String name; private String name;
private SearchOperator operator; private SearchOperator operator;
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
package ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion; package ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion;
import java.io.Serializable;
import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId;
import ch.systemsx.cisd.base.annotation.JsonObject; import ch.systemsx.cisd.base.annotation.JsonObject;
...@@ -23,9 +25,11 @@ import ch.systemsx.cisd.base.annotation.JsonObject; ...@@ -23,9 +25,11 @@ import ch.systemsx.cisd.base.annotation.JsonObject;
* @author pkupczyk * @author pkupczyk
*/ */
@JsonObject("as.dto.deletion.DeletedObject") @JsonObject("as.dto.deletion.DeletedObject")
public class DeletedObject public class DeletedObject implements Serializable
{ {
private static final long serialVersionUID = 1L;
private IObjectId id; private IObjectId id;
public IObjectId getId() public IObjectId getId()
......
...@@ -22,4 +22,6 @@ package ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context; ...@@ -22,4 +22,6 @@ package ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context;
public class CustomASServiceContext extends ServiceContext public class CustomASServiceContext extends ServiceContext
{ {
private static final long serialVersionUID = 1L;
} }
...@@ -16,11 +16,15 @@ ...@@ -16,11 +16,15 @@
package ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context; package ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context;
import java.io.Serializable;
/** /**
* @author Franz-Josef Elmer * @author Franz-Josef Elmer
*/ */
public class ServiceContext public class ServiceContext implements Serializable
{ {
private static final long serialVersionUID = 1L;
private String sessionToken; private String sessionToken;
public String getSessionToken() public String getSessionToken()
......
...@@ -17,15 +17,18 @@ ...@@ -17,15 +17,18 @@
package ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.download; package ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.download;
import java.io.InputStream; import java.io.InputStream;
import java.io.Serializable;
import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.DataSetFile; import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.DataSetFile;
/** /**
* @author pkupczyk * @author pkupczyk
*/ */
public class DataSetFileDownload public class DataSetFileDownload implements Serializable
{ {
private static final long serialVersionUID = 1L;
private DataSetFile dataSetFile; private DataSetFile dataSetFile;
private InputStream inputStream; private InputStream inputStream;
......
...@@ -22,15 +22,18 @@ import java.io.EOFException; ...@@ -22,15 +22,18 @@ import java.io.EOFException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.Serializable;
import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.DataSetFile; import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.DataSetFile;
/** /**
* @author pkupczyk * @author pkupczyk
*/ */
public class DataSetFileDownloadReader public class DataSetFileDownloadReader implements Serializable
{ {
private static final long serialVersionUID = 1L;
private InputStream in; private InputStream in;
private DataSetFileDownload lastDownload; private DataSetFileDownload lastDownload;
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package ch.ethz.sis.openbis.generic.sharedapi.v3; package ch.ethz.sis.openbis.generic.sharedapi.v3;
import java.io.Serializable;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
...@@ -24,6 +25,7 @@ import java.util.Collection; ...@@ -24,6 +25,7 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -101,13 +103,25 @@ public class EnglishCheck ...@@ -101,13 +103,25 @@ public class EnglishCheck
}); });
Collection<String> uniqueClassNames = new TreeSet<String>(nonInnerClassesAndTestClasses); Collection<String> uniqueClassNames = new TreeSet<String>(nonInnerClassesAndTestClasses);
Collection<Class<?>> uniqueClasses = ImmutableSet.copyOf(ReflectionUtils.forNames(uniqueClassNames)); Collection<Class<?>> uniqueClasses = ImmutableSet.copyOf(ReflectionUtils.forNames(uniqueClassNames));
Set<Class<?>> nonSerializableConcreteClasses = new HashSet<Class<?>>();
for (Class<?> uniqueClass : uniqueClasses) for (Class<?> uniqueClass : uniqueClasses)
{ {
System.out.println("Found V3 public class:\t" + uniqueClass.getName()); System.out.println("Found V3 public class:\t" + uniqueClass.getName());
if (false == Modifier.isAbstract(uniqueClass.getModifiers()) && false == Serializable.class.isAssignableFrom(uniqueClass))
{
nonSerializableConcreteClasses.add(uniqueClass);
}
} }
System.out.println(); System.out.println();
if (false == nonSerializableConcreteClasses.isEmpty())
{
Assert.fail("Non serializable classes found:\n" + StringUtils.join(nonSerializableConcreteClasses, ",\n"));
}
return uniqueClasses; return uniqueClasses;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment