使用模拟Fabric8 KubernetesServer时会忽略ConfigMap标签

时间:2018-07-09 12:51:15

标签: java kubernetes fabric8

这是一个简单的方法,该方法使用fabric8 kubernetes-client获取具有特定标签的configmap:

public List<ConfigMap> fetchConfigMaps(KubernetesClient client, String namespace, String labelKey, String labelValue) {
    ConfigMapList configMapList = client
            .configMaps()
            .inNamespace(namespace)
            .withLabel(labelKey, labelValue)
            .list();

    return configMapList.getItems();
}

我想使用KubernetesServer为此创建一个单元测试。

在下面的单元测试中,一个配置映射具有正确的标签,而另一个则没有。所以我希望该方法返回1:

@Rule
public KubernetesServer kubernetesServerSbx = new KubernetesServer(true, true);

@Test
public void testFetchConfigMaps() {
    KubernetesClient client = kubernetesServerSbx.getClient();

    createNamespace(client, "ns1");
    createCM(client, "ns1", "cm1", Map.of("label1", "value"));
    createCM(client, "ns1", "cm2", Map.of("label2", "value"));

    ConfigMapFetcher fetcher = new ConfigMapFetcher();

    List<ConfigMap> configMaps = fetcher.fetchConfigMaps(client, "ns1","label1", "value");

    assertEquals(1, configMaps.size());
}

private static void createNamespace(KubernetesClient client, String namespace) {
    client.namespaces().create(
            new NamespaceBuilder()
                    .withNewMetadata()
                    .withName(namespace)
                    .endMetadata()
                    .build());
}

private static void createCM(KubernetesClient client,
                             String namespace,
                             String cmName,
                             Map<String, String> labels) {

    client.configMaps().inNamespace(namespace).create(
            new ConfigMapBuilder()
                    .withNewMetadata()
                    .withName(cmName)
                    .withLabels(labels)
                    .endMetadata()
                    .build());
}

但是单元测试失败,因为该方法返回2而不是1。

我正在使用kubernetes-clientkubernetes-server-mock版本3.2.0。 here也报告了完整源代码的问题。

我做错什么了吗,或者这是库中的错误?

0 个答案:

没有答案