这是一个简单的方法,该方法使用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-client
和kubernetes-server-mock
版本3.2.0。 here也报告了完整源代码的问题。
我做错什么了吗,或者这是库中的错误?