summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2018-11-08 13:42:04 +0100
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2018-11-08 13:42:04 +0100
commit2eb9454e7c64abe8226ab30715c5d10965f707ba (patch)
tree8c5e6b77f6f094b28594569fb1ac0d4650088cf8 /controller-server
parente7be8a3fb437ed3e40bc321af58a84d77855f6f4 (diff)
Add method for GC in ApplicationStore, and update mock
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java41
1 files changed, 33 insertions, 8 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java
index e21f356dbf7..2640360f10d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java
@@ -5,35 +5,60 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationStore;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
-import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import static java.util.Objects.requireNonNull;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Threadsafe.
+ *
+ * @author jonmv
+ */
public class ApplicationStoreMock implements ApplicationStore {
- Map<String, byte[]> store = new HashMap<>();
+ private final Map<ApplicationId, Map<ApplicationVersion, byte[]>> store = new ConcurrentHashMap<>();
@Override
public byte[] getApplicationPackage(ApplicationId application, ApplicationVersion applicationVersion) {
- return store.get(path(application, applicationVersion));
+ assertFalse(application.instance().isTester());
+ return requireNonNull(store.get(application).get(applicationVersion));
}
@Override
public void putApplicationPackage(ApplicationId application, ApplicationVersion applicationVersion, byte[] applicationPackage) {
- store.put(path(application, applicationVersion), applicationPackage);
+ assertFalse(application.instance().isTester());
+ store.putIfAbsent(application, new ConcurrentHashMap<>());
+ store.get(application).put(applicationVersion, applicationPackage);
}
@Override
public void putTesterPackage(ApplicationId tester, ApplicationVersion applicationVersion, byte[] testerPackage) {
- store.put(path(tester, applicationVersion), testerPackage);
+ assertTrue(tester.instance().isTester());
+ store.putIfAbsent(tester, new ConcurrentHashMap<>());
+ store.get(tester).put(applicationVersion, testerPackage);
}
@Override
public byte[] getTesterPackage(ApplicationId tester, ApplicationVersion applicationVersion) {
- return store.get(path(tester, applicationVersion));
+ assertTrue(tester.instance().isTester());
+ return requireNonNull(store.get(tester).get(applicationVersion));
}
- String path(ApplicationId tester, ApplicationVersion applicationVersion) {
- return tester.toString() + applicationVersion.id();
+ @Override
+ public boolean pruneApplicationPackages(ApplicationId application, ApplicationVersion oldestToRetain) {
+ assertFalse(application.instance().isTester());
+ return store.containsKey(application)
+ && store.get(application).keySet().removeIf(version -> version.compareTo(oldestToRetain) < 0);
+ }
+
+ @Override
+ public boolean pruneTesterPackages(ApplicationId tester, ApplicationVersion oldestToRetain) {
+ assertTrue(tester.instance().isTester());
+ return store.containsKey(tester)
+ && store.get(tester).keySet().removeIf(version -> version.compareTo(oldestToRetain) < 0);
}
}