summaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-09-01 17:22:43 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-09-01 17:22:43 +0200
commit30f02e92849dcdb1b1de17810d46a761eb03bc19 (patch)
treea76f0c4a2f3e38c9c8d9bd48099c748790ded66f /controller-server/src/test/java/com
parentcaf58f5b7ed8cdda43ec73706986b9e41dd019ed (diff)
Add and use API for storing deployment meeta data
Diffstat (limited to 'controller-server/src/test/java/com')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java29
1 files changed, 29 insertions, 0 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 3c33051e98b..be0cd975190 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
@@ -10,9 +10,13 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationS
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterId;
+import java.time.Instant;
import java.util.Map;
+import java.util.NavigableMap;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentSkipListMap;
import static java.util.Objects.requireNonNull;
@@ -23,8 +27,11 @@ import static java.util.Objects.requireNonNull;
*/
public class ApplicationStoreMock implements ApplicationStore {
+ private static final byte[] tombstone = new byte[0];
+
private final Map<ApplicationId, Map<ApplicationVersion, byte[]>> store = new ConcurrentHashMap<>();
private final Map<ApplicationId, Map<ZoneId, byte[]>> devStore = new ConcurrentHashMap<>();
+ private final Map<ApplicationId, NavigableMap<Instant, byte[]>> meta = new ConcurrentHashMap<>();
private static ApplicationId appId(TenantName tenant, ApplicationName application) {
return ApplicationId.from(tenant, application, InstanceName.defaultName());
@@ -101,4 +108,26 @@ public class ApplicationStoreMock implements ApplicationStore {
return requireNonNull(devStore.get(application).get(zone));
}
+ @Override
+ public void putMeta(TenantName tenant, ApplicationName application, Instant now, byte[] metaZip) {
+ meta.putIfAbsent(appId(tenant, application), new ConcurrentSkipListMap<>());
+ meta.get(appId(tenant, application)).put(now, metaZip);
+ }
+
+ @Override
+ public void putMetaTombstone(TenantName tenant, ApplicationName application, Instant now) {
+ putMeta(tenant, application, now, tombstone);
+ }
+
+ @Override
+ public void pruneMeta(Instant oldest) {
+ for (ApplicationId id : meta.keySet()) {
+ Instant activeAtOldest = meta.get(id).lowerKey(oldest);
+ if (activeAtOldest != null)
+ meta.get(id).headMap(activeAtOldest).clear();
+ if (meta.get(id).lastKey().isBefore(oldest) && meta.get(id).lastEntry().getValue() == tombstone)
+ meta.remove(id);
+ }
+ }
+
}