1
1
package com .neo4j .docker .neo4jserver ;
2
2
3
+ import static org .junit .jupiter .api .Assumptions .assumeTrue ;
4
+
3
5
import com .github .dockerjava .api .command .CreateContainerCmd ;
4
6
import com .github .dockerjava .api .model .Bind ;
5
7
import com .neo4j .docker .utils .DatabaseIO ;
6
8
import com .neo4j .docker .utils .HostFileSystemOperations ;
7
9
import com .neo4j .docker .utils .Neo4jVersion ;
8
10
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 ;
11
17
import org .junit .jupiter .params .ParameterizedTest ;
12
18
import org .junit .jupiter .params .provider .MethodSource ;
13
19
import org .slf4j .Logger ;
14
20
import org .slf4j .LoggerFactory ;
15
21
import org .testcontainers .containers .GenericContainer ;
16
22
import org .testcontainers .containers .output .Slf4jLogConsumer ;
17
23
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
25
24
public class TestUpgrade
26
25
{
27
26
private static final Logger log = LoggerFactory .getLogger ( TestUpgrade .class );
@@ -30,7 +29,7 @@ public class TestUpgrade
30
29
31
30
private GenericContainer makeContainer (String image )
32
31
{
33
- GenericContainer container = new GenericContainer ( image );
32
+ GenericContainer container = new GenericContainer <> ( image );
34
33
container .withEnv ( "NEO4J_AUTH" , user + "/" + password )
35
34
.withEnv ( "NEO4J_ACCEPT_LICENSE_AGREEMENT" , "yes" )
36
35
.withExposedPorts ( 7474 )
@@ -39,22 +38,58 @@ private GenericContainer makeContainer(String image)
39
38
return container ;
40
39
}
41
40
42
- private static List <Neo4jVersion > upgradableNeo4jVersions ()
41
+ private static List <Neo4jVersion > upgradableNeo4jVersionsPre5 ()
43
42
{
44
43
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
45
44
new Neo4jVersion ( 3 , 5 , 7 ),
46
45
Neo4jVersion .NEO4J_VERSION_400 ,
47
- new Neo4jVersion ( 4 ,1 ,0 ));
46
+ new Neo4jVersion ( 4 , 1 , 0 ),
47
+ new Neo4jVersion ( 4 , 4 , 0 ));
48
48
}
49
49
50
+ private static List <Neo4jVersion > upgradableNeo4jVersions ()
51
+ {
52
+ return Arrays .asList ( new Neo4jVersion ( 5 , 1 , 0 ) );
53
+ }
50
54
51
55
@ 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
54
58
{
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
+
56
91
String upgradeFromImage = getUpgradeFromImage ( upgradeFrom );
57
- Path tmpMountFolder = HostFileSystemOperations .createTempFolder ( "upgrade-" + upgradeFrom .major + upgradeFrom .minor + "-" );
92
+ Path tmpMountFolder = HostFileSystemOperations .createTempFolder ( "upgrade-" + upgradeFrom .major + upgradeFrom .minor + "-" );
58
93
Path data , logs , imports , metrics ;
59
94
60
95
try (GenericContainer container = makeContainer ( upgradeFromImage ))
@@ -87,11 +122,21 @@ void canUpgradeNeo4j_fileMounts(Neo4jVersion upgradeFrom) throws Exception
87
122
}
88
123
}
89
124
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 ()
93
132
{
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
+
95
140
String upgradeFromImage = getUpgradeFromImage ( upgradeFrom );
96
141
String id = String .format ( "%04d" , new Random ().nextInt ( 10000 ));
97
142
log .info ( "creating volumes with id: " +id );
@@ -131,7 +176,6 @@ void canUpgradeNeo4j_namedVolumes(Neo4jVersion upgradeFrom) throws Exception
131
176
}
132
177
}
133
178
134
-
135
179
private String getUpgradeFromImage (Neo4jVersion ver )
136
180
{
137
181
if (TestSettings .EDITION == TestSettings .Edition .ENTERPRISE )
0 commit comments