aboutsummaryrefslogtreecommitdiffstats
path: root/configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-09-24 12:46:23 +0200
committerHarald Musum <musum@verizonmedia.com>2020-09-24 12:46:23 +0200
commita4c4d9075fa1a6bd9d23cac3c72ac57071493fcf (patch)
tree87d90bf1ed95d96992388d27f1b3872261982532 /configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java
parent6704090650b19fff7f69fa8a997fddad9ca91c3a (diff)
Store vespa version in ZooKeeper as well
Use version in ZooKeeper if configserver-distribute-application-package is true, fallback to version in file. Will always write to ZooKeeper so this can be the only source in the future. This means that if configserver-distribute-application-package is true and version data is found in ZooKeeper, redeployment of appplication packages will only be done on one config server
Diffstat (limited to 'configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java')
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java41
1 files changed, 36 insertions, 5 deletions
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java
index 8a1a7fbea20..1340935108b 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java
@@ -4,12 +4,16 @@ package com.yahoo.vespa.config.server.version;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.component.Version;
import com.yahoo.io.IOUtils;
+import com.yahoo.vespa.curator.mock.MockCurator;
+import com.yahoo.vespa.flags.Flags;
+import com.yahoo.vespa.flags.InMemoryFlagSource;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertFalse;
@@ -20,28 +24,49 @@ import static org.junit.Assert.assertTrue;
* @author Ulf Lilleengen
*/
public class VersionStateTest {
+ InMemoryFlagSource flagSource = new InMemoryFlagSource();
@Rule
public TemporaryFolder tempDir = new TemporaryFolder();
+ private final MockCurator curator = new MockCurator();
@Test
public void upgrade() throws IOException {
+ upgrade(true);
+ upgrade(false);
+ }
+
+ public void upgrade(boolean distributeApplicationPackage) throws IOException {
+ flagSource.withBooleanFlag(Flags.CONFIGSERVER_DISTRIBUTE_APPLICATION_PACKAGE.id(), distributeApplicationPackage);
Version unknownVersion = new Version(0, 0, 0);
- File versionFile = tempDir.newFile();
- VersionState state = new VersionState(versionFile);
+
+ VersionState state = createVersionState();
assertThat(state.storedVersion(), is(unknownVersion));
assertTrue(state.isUpgraded());
state.saveNewVersion();
assertFalse(state.isUpgraded());
- IOUtils.writeFile(versionFile, "badversion", false);
+ state.saveNewVersion("badversion");
assertThat(state.storedVersion(), is(unknownVersion));
assertTrue(state.isUpgraded());
- IOUtils.writeFile(versionFile, "5.0.0", false);
+ state.saveNewVersion("5.0.0");
assertThat(state.storedVersion(), is(new Version(5, 0, 0)));
assertTrue(state.isUpgraded());
+ // Remove zk node, should find version in ZooKeeper
+ curator.delete(VersionState.versionPath);
+ assertThat(state.storedVersion(), is(new Version(5, 0, 0)));
+ assertTrue(state.isUpgraded());
+
+ // Save new version, remove version in file, should find version in ZooKeeper
+ state.saveNewVersion("6.0.0");
+ if (distributeApplicationPackage) {
+ Files.delete(state.versionFile().toPath());
+ assertThat(state.storedVersion(), is(new Version(6, 0, 0)));
+ assertTrue(state.isUpgraded());
+ }
+
state.saveNewVersion();
assertThat(state.currentVersion(), is(state.storedVersion()));
assertFalse(state.isUpgraded());
@@ -50,7 +75,9 @@ public class VersionStateTest {
@Test
public void serverdbfile() throws IOException {
File dbDir = tempDir.newFolder();
- VersionState state = new VersionState(new ConfigserverConfig(new ConfigserverConfig.Builder().configServerDBDir(dbDir.getAbsolutePath())));
+ VersionState state = new VersionState(new ConfigserverConfig.Builder().configServerDBDir(dbDir.getAbsolutePath()).build(),
+ curator,
+ new InMemoryFlagSource());
state.saveNewVersion();
File versionFile = new File(dbDir, "vespa_version");
assertTrue(versionFile.exists());
@@ -58,4 +85,8 @@ public class VersionStateTest {
assertThat(stored, is(state.currentVersion()));
}
+ private VersionState createVersionState() throws IOException {
+ return new VersionState(tempDir.newFile(), curator, flagSource);
+ }
+
}