You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2016/11/19 22:50:30 UTC
[29/35] zest-java git commit: uowfile: fix tests for parallel
execution
uowfile: fix tests for parallel execution
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/cb2c52fb
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/cb2c52fb
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/cb2c52fb
Branch: refs/heads/develop
Commit: cb2c52fb3d44b0e95bdb913d69106168848c6f90
Parents: 5a5408c
Author: Paul Merlin <pa...@apache.org>
Authored: Sat Nov 19 19:57:31 2016 +0100
Committer: Paul Merlin <pa...@apache.org>
Committed: Sat Nov 19 19:57:31 2016 +0100
----------------------------------------------------------------------
.../library/uowfile/AbstractUoWFileTest.java | 92 --------------------
.../zest/library/uowfile/HasUoWFileTest.java | 58 +++++++++---
.../zest/library/uowfile/HasUoWFilesTest.java | 51 +++++++++--
3 files changed, 91 insertions(+), 110 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-java/blob/cb2c52fb/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/AbstractUoWFileTest.java
----------------------------------------------------------------------
diff --git a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/AbstractUoWFileTest.java b/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/AbstractUoWFileTest.java
deleted file mode 100644
index 928a02c..0000000
--- a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/AbstractUoWFileTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-package org.apache.zest.library.uowfile;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.apache.zest.io.Inputs;
-import org.apache.zest.io.Outputs;
-import org.apache.zest.test.AbstractZestTest;
-
-public abstract class AbstractUoWFileTest
- extends AbstractZestTest
-{
- protected static File baseTestDir;
-
- @BeforeClass
- public static void beforeClass()
- throws IOException
- {
- File testDir = new File( "build/uowfiletest" );
- if( !testDir.exists() )
- {
- if( !testDir.mkdirs() )
- {
- throw new IOException( "Unable to create directory: " + testDir );
- }
- }
- baseTestDir = testDir;
- }
-
- @AfterClass
- public static void afterClass()
- {
- // Delete test data
- Stack<File> stack = new Stack<>();
- stack.push( baseTestDir );
- while( !stack.empty() )
- {
- File each = stack.peek();
- if( each.isDirectory() )
- {
- File[] children = each.listFiles();
- if( children.length > 0 )
- {
- for( File child : children )
- {
- stack.push( child );
- }
- }
- else
- {
- stack.pop().delete();
- }
- }
- else
- {
- stack.pop().delete();
- }
- }
- }
-
- protected final boolean isFileFirstLineEqualsTo( File file, String start )
- throws IOException
- {
- List<String> lines = new ArrayList<>();
- // This load the full file but used test resources are single line files
- Inputs.text( file ).transferTo( Outputs.collection( lines ) );
- return lines.get( 0 ).trim().startsWith( start );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/cb2c52fb/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java
----------------------------------------------------------------------
diff --git a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java b/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java
index 11cf220..8a53c0a 100644
--- a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java
+++ b/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java
@@ -22,21 +22,21 @@ package org.apache.zest.library.uowfile;
import java.io.File;
import java.io.IOException;
import java.net.URL;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
-import org.apache.zest.api.identity.HasIdentity;
-import org.apache.zest.api.identity.Identity;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.junit.Before;
-import org.junit.Test;
+import java.util.stream.Stream;
import org.apache.zest.api.concern.Concerns;
import org.apache.zest.api.entity.EntityBuilder;
+import org.apache.zest.api.identity.HasIdentity;
+import org.apache.zest.api.identity.Identity;
import org.apache.zest.api.injection.scope.Structure;
import org.apache.zest.api.injection.scope.This;
import org.apache.zest.api.mixin.Mixins;
import org.apache.zest.api.property.Property;
import org.apache.zest.api.unitofwork.UnitOfWork;
import org.apache.zest.api.unitofwork.UnitOfWorkCompletionException;
+import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
import org.apache.zest.api.unitofwork.concern.UnitOfWorkConcern;
import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
import org.apache.zest.api.unitofwork.concern.UnitOfWorkRetry;
@@ -49,21 +49,32 @@ import org.apache.zest.library.uowfile.bootstrap.UoWFileAssembler;
import org.apache.zest.library.uowfile.internal.ConcurrentUoWFileModificationException;
import org.apache.zest.library.uowfile.singular.HasUoWFileLifecycle;
import org.apache.zest.library.uowfile.singular.UoWFileLocator;
+import org.apache.zest.spi.ZestSPI;
+import org.apache.zest.test.AbstractZestTest;
import org.apache.zest.test.EntityTestAssembler;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class HasUoWFileTest
- extends AbstractUoWFileTest
+ extends AbstractZestTest
{
private static final Logger LOGGER = LoggerFactory.getLogger( HasUoWFileTest.class );
private static final URL CREATION_CONTENT_URL = HasUoWFileTest.class.getResource( "creation.txt" );
private static final URL MODIFICATION_CONTENT_URL = HasUoWFileTest.class.getResource( "modification.txt" );
+ @Rule
+ public final TemporaryFolder tmpDir = new TemporaryFolder();
+
// START SNIPPET: entity
// START SNIPPET: uowfile
public interface TestedEntity
@@ -83,10 +94,14 @@ public class HasUoWFileTest
@This
private HasIdentity meAsIdentity;
+ @Structure
+ private ZestSPI spi;
+
@Override
public File locateAttachedFile()
{
- return new File( baseTestDir, meAsIdentity.identity().get().toString() );
+ File baseDir = spi.entityDescriptorFor( meAsIdentity ).metaInfo( File.class );
+ return new File( baseDir, meAsIdentity.identity().get().toString() );
}
}
// END SNIPPET: locator
@@ -170,6 +185,7 @@ public class HasUoWFileTest
module.entities( TestedEntity.class ).withMixins( TestedFileLocatorMixin.class );
// END SNIPPET: assembly
+ module.entities( TestedEntity.class ).setMetaInfo( tmpDir.getRoot() );
module.services( TestService.class );
new EntityTestAssembler().assemble( module );
new FileConfigurationAssembler().assemble( module );
@@ -207,7 +223,12 @@ public class HasUoWFileTest
attachedFile = entity.attachedFile();
uow.complete();
}
- assertTrue( "File content was not the good one", isFileFirstLineEqualsTo( attachedFile, "Creation" ) );
+ try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
+ {
+ assertThat("File content was not the good one",
+ lines.limit( 1 ).findFirst().get(),
+ equalTo( "Creation" ) );
+ }
}
@Test
@@ -232,7 +253,12 @@ public class HasUoWFileTest
{
testService.modifyFile( entityId );
}
- assertTrue( "File content after discarded modification was not the good one", isFileFirstLineEqualsTo( attachedFile, "Creation" ) );
+ try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
+ {
+ assertThat("File content after discarded modification was not the good one",
+ lines.limit( 1 ).findFirst().get(),
+ equalTo( "Creation" ) );
+ }
// Testing completed modification
try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork() )
@@ -240,7 +266,12 @@ public class HasUoWFileTest
testService.modifyFile( entityId );
uow.complete();
}
- assertTrue( "Modified file content was not the good one", isFileFirstLineEqualsTo( attachedFile, "Modification" ) );
+ try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
+ {
+ assertThat("Modified file content was not the good one",
+ lines.limit( 1 ).findFirst().get(),
+ equalTo( "Modification" ) );
+ }
}
@Test
@@ -370,7 +401,12 @@ public class HasUoWFileTest
}
assertTrue( "There were errors during TestRetry", ex.isEmpty() );
- assertTrue( "Modified file content was not the good one", isFileFirstLineEqualsTo( attachedFile, "Modification" ) );
+ try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
+ {
+ assertThat("Modified file content was not the good one",
+ lines.limit( 1 ).findFirst().get(),
+ equalTo( "Modification" ) );
+ }
}
private TestedEntity createTestedEntity( UnitOfWork uow, String name )
http://git-wip-us.apache.org/repos/asf/zest-java/blob/cb2c52fb/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java
----------------------------------------------------------------------
diff --git a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java b/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java
index ce0ece2..4cdb275 100644
--- a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java
+++ b/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java
@@ -22,12 +22,17 @@ package org.apache.zest.library.uowfile;
import java.io.File;
import java.io.IOException;
import java.net.URL;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Stream;
import org.apache.zest.api.identity.HasIdentity;
import org.apache.zest.api.identity.Identity;
import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
+import org.apache.zest.spi.ZestSPI;
+import org.apache.zest.test.AbstractZestTest;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.apache.zest.api.concern.Concerns;
import org.apache.zest.api.entity.EntityBuilder;
@@ -50,20 +55,26 @@ import org.apache.zest.library.uowfile.internal.ConcurrentUoWFileModificationExc
import org.apache.zest.library.uowfile.plural.HasUoWFilesLifecycle;
import org.apache.zest.library.uowfile.plural.UoWFilesLocator;
import org.apache.zest.test.EntityTestAssembler;
+import org.junit.rules.TemporaryFolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class HasUoWFilesTest
- extends AbstractUoWFileTest
+ extends AbstractZestTest
{
private static final Logger LOGGER = LoggerFactory.getLogger( HasUoWFilesTest.class );
private static final URL CREATION_CONTENT_URL = HasUoWFilesTest.class.getResource( "creation.txt" );
private static final URL MODIFICATION_CONTENT_URL = HasUoWFilesTest.class.getResource( "modification.txt" );
+ @Rule
+ public final TemporaryFolder tmpDir = new TemporaryFolder();
+
// START SNIPPET: uowfile
public enum MyEnum
{
@@ -88,13 +99,17 @@ public class HasUoWFilesTest
@This
private HasIdentity meAsIdentity;
+ @Structure
+ private ZestSPI spi;
+
@Override
public Iterable<File> locateAttachedFiles()
{
+ File baseDir = spi.entityDescriptorFor( meAsIdentity ).metaInfo( File.class );
List<File> list = new ArrayList<>();
for( MyEnum eachValue : MyEnum.values() )
{
- list.add( new File( baseTestDir, meAsIdentity.identity().get() + "." + eachValue.name() ) );
+ list.add( new File( baseDir, meAsIdentity.identity().get() + "." + eachValue.name() ) );
}
return list;
}
@@ -102,7 +117,8 @@ public class HasUoWFilesTest
@Override
public File locateAttachedFile( MyEnum key )
{
- return new File( baseTestDir, meAsIdentity.identity().get() + "." + key.name() );
+ File baseDir = spi.entityDescriptorFor( meAsIdentity ).metaInfo( File.class );
+ return new File( baseDir, meAsIdentity.identity().get() + "." + key.name() );
}
}
// END SNIPPET: locator
@@ -185,6 +201,7 @@ public class HasUoWFilesTest
module.entities( TestedEntity.class ).withMixins( TestedFilesLocatorMixin.class );
// END SNIPPET: assembly
+ module.entities( TestedEntity.class ).setMetaInfo( tmpDir.getRoot() );
module.services( TestService.class );
new EntityTestAssembler().assemble( module );
new FileConfigurationAssembler().assemble( module );
@@ -222,7 +239,12 @@ public class HasUoWFilesTest
attachedFile = entity.attachedFile( MyEnum.fileOne );
uow.complete();
}
- assertTrue( "File content was not the good one", isFileFirstLineEqualsTo( attachedFile, "Creation" ) );
+ try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
+ {
+ assertThat("File content was not the good one",
+ lines.limit( 1 ).findFirst().get(),
+ equalTo( "Creation" ) );
+ }
}
@Test
@@ -247,7 +269,12 @@ public class HasUoWFilesTest
{
testService.modifyFile( entityId );
}
- assertTrue( "File content after discarded modification was not the good one", isFileFirstLineEqualsTo( attachedFile, "Creation" ) );
+ try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
+ {
+ assertThat("File content after discarded modification was not the good one",
+ lines.limit( 1 ).findFirst().get(),
+ equalTo( "Creation" ) );
+ }
// Testing completed modification
try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork() )
@@ -255,7 +282,12 @@ public class HasUoWFilesTest
testService.modifyFile( entityId );
uow.complete();
}
- assertTrue( "Modified file content was not the good one", isFileFirstLineEqualsTo( attachedFile, "Modification" ) );
+ try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
+ {
+ assertThat("Modified file content was not the good one",
+ lines.limit( 1 ).findFirst().get(),
+ equalTo( "Modification" ) );
+ }
}
@Test
@@ -385,7 +417,12 @@ public class HasUoWFilesTest
}
assertTrue( "There were errors during TestRetry", ex.isEmpty() );
- assertTrue( "Modified file content was not the good one", isFileFirstLineEqualsTo( attachedFile, "Modification" ) );
+ try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
+ {
+ assertThat("Modified file content was not the good one",
+ lines.limit( 1 ).findFirst().get(),
+ equalTo( "Modification" ) );
+ }
}
private TestedEntity createTestedOneEntityTwoFilesEntity( UnitOfWork uow, String name )