Skip to content

Commit db907cd

Browse files
authored
Merge pull request #396 from zimmre/enable_upgrade_tests
Enable upgrade tests
2 parents 8764c39 + 02da4b7 commit db907cd

File tree

1 file changed

+65
-21
lines changed

1 file changed

+65
-21
lines changed

src/test/java/com/neo4j/docker/neo4jserver/TestUpgrade.java

Lines changed: 65 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
11
package com.neo4j.docker.neo4jserver;
22

3+
import static org.junit.jupiter.api.Assumptions.assumeTrue;
4+
35
import com.github.dockerjava.api.command.CreateContainerCmd;
46
import com.github.dockerjava.api.model.Bind;
57
import com.neo4j.docker.utils.DatabaseIO;
68
import com.neo4j.docker.utils.HostFileSystemOperations;
79
import com.neo4j.docker.utils.Neo4jVersion;
810
import com.neo4j.docker.utils.TestSettings;
9-
import org.junit.jupiter.api.Assumptions;
10-
import org.junit.jupiter.api.Disabled;
11+
import java.io.IOException;
12+
import java.nio.file.Path;
13+
import java.util.Arrays;
14+
import java.util.List;
15+
import java.util.Random;
16+
import java.util.function.Consumer;
1117
import org.junit.jupiter.params.ParameterizedTest;
1218
import org.junit.jupiter.params.provider.MethodSource;
1319
import org.slf4j.Logger;
1420
import org.slf4j.LoggerFactory;
1521
import org.testcontainers.containers.GenericContainer;
1622
import org.testcontainers.containers.output.Slf4jLogConsumer;
1723

18-
import java.nio.file.Path;
19-
import java.util.Arrays;
20-
import java.util.List;
21-
import java.util.Random;
22-
import java.util.function.Consumer;
23-
24-
@Disabled
2524
public class TestUpgrade
2625
{
2726
private static final Logger log = LoggerFactory.getLogger( TestUpgrade.class );
@@ -30,7 +29,7 @@ public class TestUpgrade
3029

3130
private GenericContainer makeContainer(String image)
3231
{
33-
GenericContainer container = new GenericContainer( image );
32+
GenericContainer container = new GenericContainer<>( image );
3433
container.withEnv( "NEO4J_AUTH", user + "/" + password )
3534
.withEnv( "NEO4J_ACCEPT_LICENSE_AGREEMENT", "yes" )
3635
.withExposedPorts( 7474 )
@@ -39,22 +38,58 @@ private GenericContainer makeContainer(String image)
3938
return container;
4039
}
4140

42-
private static List<Neo4jVersion> upgradableNeo4jVersions()
41+
private static List<Neo4jVersion> upgradableNeo4jVersionsPre5()
4342
{
4443
return Arrays.asList( new Neo4jVersion( 3, 5, 3 ), // 3.5.6 image introduced file permission changes, so we need to test upgrades before that version
4544
new Neo4jVersion( 3, 5, 7 ),
4645
Neo4jVersion.NEO4J_VERSION_400,
47-
new Neo4jVersion( 4,1,0 ));
46+
new Neo4jVersion( 4, 1, 0 ),
47+
new Neo4jVersion( 4, 4, 0 ));
4848
}
4949

50+
private static List<Neo4jVersion> upgradableNeo4jVersions()
51+
{
52+
return Arrays.asList( new Neo4jVersion( 5, 1, 0) );
53+
}
5054

5155
@ParameterizedTest(name = "upgrade from {0}")
52-
@MethodSource("upgradableNeo4jVersions")
53-
void canUpgradeNeo4j_fileMounts(Neo4jVersion upgradeFrom) throws Exception
56+
@MethodSource( "upgradableNeo4jVersionsPre5" )
57+
void canUpgradeNeo4j_fileMountsPre5( Neo4jVersion upgradeFrom) throws Exception
5458
{
55-
Assumptions.assumeTrue( TestSettings.NEO4J_VERSION.isNewerThan( upgradeFrom ), "cannot upgrade from newer version "+upgradeFrom.toString() );
59+
assumeTrue( TestSettings.NEO4J_VERSION.isOlderThan( Neo4jVersion.NEO4J_VERSION_500 ), "this test only for upgrades before 5.0: " + TestSettings.NEO4J_VERSION );
60+
testUpgradeFileMounts( upgradeFrom );
61+
}
62+
63+
@ParameterizedTest(name = "upgrade from {0}")
64+
@MethodSource( "upgradableNeo4jVersionsPre5" )
65+
void canUpgradeNeo4j_namedVolumesPre5(Neo4jVersion upgradeFrom) throws Exception
66+
{
67+
assumeTrue( TestSettings.NEO4J_VERSION.isOlderThan( Neo4jVersion.NEO4J_VERSION_500 ), "this test only for upgrades before 5.0: " + TestSettings.NEO4J_VERSION );
68+
testUpgradeNamedVolumes( upgradeFrom );
69+
}
70+
71+
@ParameterizedTest(name = "upgrade from {0}")
72+
@MethodSource( "upgradableNeo4jVersions" )
73+
void canUpgradeNeo4j_fileMounts( Neo4jVersion upgradeFrom) throws Exception
74+
{
75+
assumeTrue( TestSettings.NEO4J_VERSION.isAtLeastVersion( Neo4jVersion.NEO4J_VERSION_500 ), "this test only for upgrades after 5.0: " + TestSettings.NEO4J_VERSION );
76+
testUpgradeFileMounts( upgradeFrom );
77+
}
78+
79+
@ParameterizedTest(name = "upgrade from {0}")
80+
@MethodSource( "upgradableNeo4jVersions" )
81+
void canUpgradeNeo4j_namedVolumes(Neo4jVersion upgradeFrom) throws Exception
82+
{
83+
assumeTrue( TestSettings.NEO4J_VERSION.isAtLeastVersion( Neo4jVersion.NEO4J_VERSION_500 ), "this test only for upgrades after 5.0: " + TestSettings.NEO4J_VERSION );
84+
testUpgradeNamedVolumes( upgradeFrom );
85+
}
86+
87+
private void testUpgradeFileMounts( Neo4jVersion upgradeFrom ) throws IOException
88+
{
89+
assumeUpgradeSupported( upgradeFrom );
90+
5691
String upgradeFromImage = getUpgradeFromImage( upgradeFrom );
57-
Path tmpMountFolder = HostFileSystemOperations.createTempFolder( "upgrade-"+upgradeFrom.major+upgradeFrom.minor+"-" );
92+
Path tmpMountFolder = HostFileSystemOperations.createTempFolder( "upgrade-" + upgradeFrom.major + upgradeFrom.minor + "-" );
5893
Path data, logs, imports, metrics;
5994

6095
try(GenericContainer container = makeContainer( upgradeFromImage ))
@@ -87,11 +122,21 @@ void canUpgradeNeo4j_fileMounts(Neo4jVersion upgradeFrom) throws Exception
87122
}
88123
}
89124

90-
@ParameterizedTest(name = "upgrade from {0}")
91-
@MethodSource("upgradableNeo4jVersions")
92-
void canUpgradeNeo4j_namedVolumes(Neo4jVersion upgradeFrom) throws Exception
125+
private static void assumeUpgradeSupported( Neo4jVersion upgradeFrom )
126+
{
127+
assumeTrue( TestSettings.NEO4J_VERSION.isNewerThan( upgradeFrom ), "cannot upgrade from newer version " + upgradeFrom );
128+
assumeTrue( !isArm() || upgradeFrom.isNewerThan( new Neo4jVersion( 4, 4, 0 ) ), "ARM only supported since 4.4" );
129+
}
130+
131+
private static boolean isArm()
93132
{
94-
Assumptions.assumeTrue( TestSettings.NEO4J_VERSION.isNewerThan( upgradeFrom ), "cannot upgrade from newer version "+upgradeFrom.toString() );
133+
return System.getProperty( "os.arch" ).equals( "aarch64" );
134+
}
135+
136+
private void testUpgradeNamedVolumes( Neo4jVersion upgradeFrom )
137+
{
138+
assumeUpgradeSupported(upgradeFrom);
139+
95140
String upgradeFromImage = getUpgradeFromImage( upgradeFrom );
96141
String id = String.format( "%04d", new Random().nextInt( 10000 ));
97142
log.info( "creating volumes with id: "+id );
@@ -131,7 +176,6 @@ void canUpgradeNeo4j_namedVolumes(Neo4jVersion upgradeFrom) throws Exception
131176
}
132177
}
133178

134-
135179
private String getUpgradeFromImage(Neo4jVersion ver)
136180
{
137181
if(TestSettings.EDITION == TestSettings.Edition.ENTERPRISE)

0 commit comments

Comments
 (0)