/** * Copyright 2005-2016 Red Hat, Inc. * * Red Hat licenses this file to you under the Apache License, version * 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ package io.fabric8.kubernetes.api; import com.fasterxml.jackson.databind.ObjectMapper; import io.fabric8.kubernetes.api.model.*; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.util.Collection; import java.util.List; import static io.fabric8.kubernetes.api.KubernetesHelper.getContainerPorts; import static io.fabric8.utils.Files.assertDirectoryExists; import static io.fabric8.utils.Files.assertFileExists; import static org.junit.Assert.*; /** * Parses the example JSON */ public class ParseExamplesTest { private static final transient Logger LOG = LoggerFactory.getLogger(ParseExamplesTest.class); private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); public static final String SYSTEM_PROPERTY_KUBE_DIR = "kube.dir"; @Test public void testParsePodList() throws Exception { KubernetesList podList = assertParseExampleFile("pod-list.json", KubernetesList.class); List<HasMetadata> items = podList.getItems(); assertNotEmpty("items", items); Pod pod = (Pod) items.get(0); assertNotNull("pod1", pod); assertEquals("pod1.name", "my-pod-1", KubernetesHelper.getName(pod)); PodSpec podSpec = pod.getSpec(); assertNotNull("pod1.podSpec", podSpec); List<Container> containers = podSpec.getContainers(); assertNotEmpty("pod1.podSpec.containers", containers); Container container = containers.get(0); assertNotNull("pod1.podSpec.container[0]", container); assertEquals("pod1.podSpec.container[0].name", "nginx", container.getName()); assertEquals("pod1.podSpec.container[0].image", "dockerfile/nginx", container.getImage()); LOG.info("pod1 container1 " + container); String json = KubernetesHelper.toJson(podList); LOG.info("Got JSON: " + json); } @Test public void testParsePodListEmptyResults() throws Exception { PodList podList = assertParseExampleFile("pod-list-empty-results.json", PodList.class); List<Pod> items = podList.getItems(); assertNotEmpty("items", items); Pod pod = items.get(0); assertNotNull("pod1", pod); assertEquals("127.0.0.1", pod.getStatus().getHostIP()); } @Test public void testParseService() throws Exception { Service service = assertParseExampleFile("service.json", Service.class); assertEquals("Service", service.getKind()); Integer expectedPort = 9090; assertEquals(expectedPort, getContainerPorts(service).iterator().next()); //OBJECT_MAPPER.writer().writeValue(System.out, service); } @Test public void testParsePod() throws Exception { assertParseExampleFile("pod.json", Pod.class); } public static void assertNotEmpty(String name, Collection collection) { assertNotNull(name + " is null!", collection); assertFalse(name + " should not be empty!", collection.isEmpty()); } public static <T> T assertParseExampleFile(String fileName, Class<T> clazz) throws Exception { File exampleFile = new File(getKubernetesExamplesDir(), fileName); assertFileExists(exampleFile); T answer = OBJECT_MAPPER.readerFor(clazz).readValue(exampleFile); assertNotNull("Null returned while unmarshalling " + exampleFile, answer); LOG.info("Parsed: " + fileName + " as: " + answer); return answer; } public static File getKubernetesSourceDir() { //String path = System.getProperty(SYSTEM_PROPERTY_KUBE_DIR, "../../../kubernetes"); String basedir = System.getProperty("basedir", "."); String kubeSourceDir = basedir + "/src/main/kubernetes"; String path = System.getProperty(SYSTEM_PROPERTY_KUBE_DIR, kubeSourceDir); File kubeDir = new File(path); assertTrue("Kube directory " + kubeDir + " does not exist! Please supply the correct value in the " + SYSTEM_PROPERTY_KUBE_DIR + " system property value", kubeDir.exists()); return kubeDir; } public static File getKubernetesExamplesDir() { File answer = new File(getKubernetesSourceDir(), "api/examples"); assertDirectoryExists(answer); return answer; } }