aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ArtifactRegistryMock.java
blob: 3c9e967921034afab4a31749edcd839aca7082e2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.integration;

import com.yahoo.vespa.hosted.controller.api.integration.artifact.Artifact;
import com.yahoo.vespa.hosted.controller.api.integration.artifact.ArtifactRegistry;

import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author mpolden
 */
public class ArtifactRegistryMock implements ArtifactRegistry {

    private static final Comparator<Artifact> comparator = Comparator.comparing(Artifact::registry)
                                                                     .thenComparing(Artifact::repository)
                                                                     .thenComparing(Artifact::version);

    private final Map<String, Artifact> images = new HashMap<>();

    public ArtifactRegistryMock add(Artifact image) {
        if (images.containsKey(image.id())) throw new IllegalArgumentException("Image with ID '" + image.id() + "' already exists");
        images.put(image.id(), image);
        return this;
    }

    @Override
    public void deleteAll(List<Artifact> artifacts) {
        artifacts.forEach(image -> this.images.remove(image.id()));
    }

    @Override
    public List<Artifact> list() {
        return images.values().stream().sorted(comparator).toList();
    }

}