1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

fix pods.test.ts

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-04-11 11:31:02 -04:00
parent 42f6b2de82
commit 977c83502d
5 changed files with 46 additions and 42 deletions

View File

@ -4,6 +4,7 @@
*/ */
import assert from "assert"; import assert from "assert";
import type { PodContainer, PodContainerStatus } from "../endpoints";
import { Pod } from "../endpoints"; import { Pod } from "../endpoints";
interface GetDummyPodOptions { interface GetDummyPodOptions {
@ -13,15 +14,18 @@ interface GetDummyPodOptions {
initDead?: number; initDead?: number;
} }
function getDummyPod(rawOpts?: GetDummyPodOptions): Pod { function getDummyPod(rawOpts: GetDummyPodOptions = {}): Pod {
const opts = { const {
...(rawOpts ?? {}), running = 0,
running: 0, dead = 0,
dead: 0, initDead = 0,
initDead: 0, initRunning = 0,
initRunning: 0, } = rawOpts;
};
const containers: PodContainer[] = [];
const initContainers: PodContainer[] = [];
const containerStatuses: PodContainerStatus[] = [];
const initContainerStatuses: PodContainerStatus[] = [];
const pod = new Pod({ const pod = new Pod({
apiVersion: "v1", apiVersion: "v1",
kind: "Pod", kind: "Pod",
@ -33,8 +37,8 @@ function getDummyPod(rawOpts?: GetDummyPodOptions): Pod {
selfLink: "/api/v1/pods/default/test", selfLink: "/api/v1/pods/default/test",
}, },
spec: { spec: {
containers: [], containers,
initContainers: [], initContainers,
serviceAccount: "dummy", serviceAccount: "dummy",
serviceAccountName: "dummy", serviceAccountName: "dummy",
}, },
@ -44,20 +48,20 @@ function getDummyPod(rawOpts?: GetDummyPodOptions): Pod {
hostIP: "10.0.0.1", hostIP: "10.0.0.1",
podIP: "10.0.0.1", podIP: "10.0.0.1",
startTime: "now", startTime: "now",
containerStatuses: [], containerStatuses,
initContainerStatuses: [], initContainerStatuses,
}, },
}); });
for (let i = 0; i < opts.running; i += 1) { for (let i = 0; i < running; i += 1) {
const name = `container_r_${i}`; const name = `container_running_${i}`;
pod.spec.containers?.push({ containers.push({
image: "dummy", image: "dummy",
imagePullPolicy: "dummy", imagePullPolicy: "dummy",
name, name,
}); });
pod.status?.containerStatuses?.push({ containerStatuses.push({
image: "dummy", image: "dummy",
imageID: "dummy", imageID: "dummy",
name, name,
@ -71,15 +75,15 @@ function getDummyPod(rawOpts?: GetDummyPodOptions): Pod {
}); });
} }
for (let i = 0; i < opts.dead; i += 1) { for (let i = 0; i < dead; i += 1) {
const name = `container_d_${i}`; const name = `container_dead_${i}`;
pod.spec.containers?.push({ containers.push({
image: "dummy", image: "dummy",
imagePullPolicy: "dummy", imagePullPolicy: "dummy",
name, name,
}); });
pod.status?.containerStatuses?.push({ containerStatuses.push({
image: "dummy", image: "dummy",
imageID: "dummy", imageID: "dummy",
name, name,
@ -96,15 +100,15 @@ function getDummyPod(rawOpts?: GetDummyPodOptions): Pod {
}); });
} }
for (let i = 0; i < opts.initRunning; i += 1) { for (let i = 0; i < initRunning; i += 1) {
const name = `container_ir_${i}`; const name = `container_init-running_${i}`;
pod.spec.initContainers?.push({ initContainers.push({
image: "dummy", image: "dummy",
imagePullPolicy: "dummy", imagePullPolicy: "dummy",
name, name,
}); });
pod.status?.initContainerStatuses?.push({ initContainerStatuses.push({
image: "dummy", image: "dummy",
imageID: "dummy", imageID: "dummy",
name, name,
@ -118,15 +122,15 @@ function getDummyPod(rawOpts?: GetDummyPodOptions): Pod {
}); });
} }
for (let i = 0; i < opts.initDead; i += 1) { for (let i = 0; i < initDead; i += 1) {
const name = `container_id_${i}`; const name = `container_init-dead_${i}`;
pod.spec.initContainers?.push({ initContainers.push({
image: "dummy", image: "dummy",
imagePullPolicy: "dummy", imagePullPolicy: "dummy",
name, name,
}); });
pod.status?.initContainerStatuses?.push({ initContainerStatuses.push({
image: "dummy", image: "dummy",
imageID: "dummy", imageID: "dummy",
name, name,
@ -172,8 +176,8 @@ describe("Pods", () => {
it("getRunningContainers should return only running and init running", () => { it("getRunningContainers should return only running and init running", () => {
const res = [ const res = [
...Array.from(new Array(running), (val, index) => getNamedContainer(`container_r_${index}`)), ...Array.from(new Array(running), (val, index) => getNamedContainer(`container_running_${index}`)),
...Array.from(new Array(initRunning), (val, index) => getNamedContainer(`container_ir_${index}`)), ...Array.from(new Array(initRunning), (val, index) => getNamedContainer(`container_init-running_${index}`)),
]; ];
expect(pod.getRunningContainers()).toStrictEqual(res); expect(pod.getRunningContainers()).toStrictEqual(res);
@ -181,10 +185,10 @@ describe("Pods", () => {
it("getAllContainers should return all containers", () => { it("getAllContainers should return all containers", () => {
const res = [ const res = [
...Array.from(new Array(running), (val, index) => getNamedContainer(`container_r_${index}`)), ...Array.from(new Array(running), (val, index) => getNamedContainer(`container_running_${index}`)),
...Array.from(new Array(dead), (val, index) => getNamedContainer(`container_d_${index}`)), ...Array.from(new Array(dead), (val, index) => getNamedContainer(`container_dead_${index}`)),
...Array.from(new Array(initRunning), (val, index) => getNamedContainer(`container_ir_${index}`)), ...Array.from(new Array(initRunning), (val, index) => getNamedContainer(`container_init-running_${index}`)),
...Array.from(new Array(initDead), (val, index) => getNamedContainer(`container_id_${index}`)), ...Array.from(new Array(initDead), (val, index) => getNamedContainer(`container_init-dead_${index}`)),
]; ];
expect(pod.getAllContainers()).toStrictEqual(res); expect(pod.getAllContainers()).toStrictEqual(res);

View File

@ -201,7 +201,7 @@ export interface ContainerState {
terminated?: ContainerStateTerminated; terminated?: ContainerStateTerminated;
} }
export interface IPodContainerStatus { export interface PodContainerStatus {
name: string; name: string;
state?: ContainerState; state?: ContainerState;
lastState?: ContainerState; lastState?: ContainerState;
@ -753,8 +753,8 @@ export interface PodStatus {
ip: string; ip: string;
}[]; }[];
startTime: string; startTime: string;
initContainerStatuses?: IPodContainerStatus[]; initContainerStatuses?: PodContainerStatus[];
containerStatuses?: IPodContainerStatus[]; containerStatuses?: PodContainerStatus[];
qosClass?: string; qosClass?: string;
reason?: string; reason?: string;
} }

View File

@ -59,7 +59,7 @@ export { CustomResourceDefinition, crdApi } from "../../common/k8s-api/endpoints
// types // types
export type { ILocalKubeApiConfig, IRemoteKubeApiConfig, IKubeApiCluster } from "../../common/k8s-api/kube-api"; export type { ILocalKubeApiConfig, IRemoteKubeApiConfig, IKubeApiCluster } from "../../common/k8s-api/kube-api";
export type { PodContainer as IPodContainer, IPodContainerStatus } from "../../common/k8s-api/endpoints/pods.api"; export type { PodContainer as IPodContainer, PodContainerStatus as IPodContainerStatus } from "../../common/k8s-api/endpoints/pods.api";
export type { SecretReference as ISecretRef } from "../../common/k8s-api/endpoints/secret.api"; export type { SecretReference as ISecretRef } from "../../common/k8s-api/endpoints/secret.api";
export type { KubeObjectMetadata, KubeJsonApiObjectMetadata, KubeStatusData } from "../../common/k8s-api/kube-object"; export type { KubeObjectMetadata, KubeJsonApiObjectMetadata, KubeStatusData } from "../../common/k8s-api/kube-object";
export type { KubeObjectStoreLoadAllParams, KubeObjectStoreLoadingParams, KubeObjectStoreSubscribeParams } from "../../common/k8s-api/kube-object.store"; export type { KubeObjectStoreLoadAllParams, KubeObjectStoreLoadingParams, KubeObjectStoreSubscribeParams } from "../../common/k8s-api/kube-object.store";

View File

@ -73,7 +73,7 @@ export { KubeJsonApi } from "../../common/k8s-api/kube-json-api";
// types // types
export type { ILocalKubeApiConfig, IRemoteKubeApiConfig, IKubeApiCluster } from "../../common/k8s-api/kube-api"; export type { ILocalKubeApiConfig, IRemoteKubeApiConfig, IKubeApiCluster } from "../../common/k8s-api/kube-api";
export type { PodContainer as IPodContainer, IPodContainerStatus } from "../../common/k8s-api/endpoints"; export type { PodContainer as IPodContainer, PodContainerStatus as IPodContainerStatus } from "../../common/k8s-api/endpoints";
export type { SecretReference as ISecretRef } from "../../common/k8s-api/endpoints"; export type { SecretReference as ISecretRef } from "../../common/k8s-api/endpoints";
export type { KubeObjectStatus } from "./kube-object-status"; export type { KubeObjectStatus } from "./kube-object-status";
export type { KubeJsonApiObjectMetadata as KubeObjectMetadata, KubeStatusData } from "../../common/k8s-api/kube-object"; export type { KubeJsonApiObjectMetadata as KubeObjectMetadata, KubeStatusData } from "../../common/k8s-api/kube-object";

View File

@ -6,7 +6,7 @@
import "./pod-details-container.scss"; import "./pod-details-container.scss";
import React from "react"; import React from "react";
import type { PodContainer, IPodContainerStatus, Pod } from "../../../common/k8s-api/endpoints"; import type { PodContainer, PodContainerStatus, Pod } from "../../../common/k8s-api/endpoints";
import { DrawerItem } from "../drawer"; import { DrawerItem } from "../drawer";
import { cssNames, isDefined } from "../../utils"; import { cssNames, isDefined } from "../../utils";
import { StatusBrick } from "../status-brick"; import { StatusBrick } from "../status-brick";
@ -43,7 +43,7 @@ class NonInjectedPodDetailsContainer extends React.Component<PodDetailsContainer
]); ]);
} }
renderStatus(state: string, status: IPodContainerStatus | null | undefined) { renderStatus(state: string, status: PodContainerStatus | null | undefined) {
const { ready = false, state: containerState = {}} = status ?? {}; const { ready = false, state: containerState = {}} = status ?? {};
const { terminated } = containerState; const { terminated } = containerState;
@ -56,7 +56,7 @@ class NonInjectedPodDetailsContainer extends React.Component<PodDetailsContainer
); );
} }
renderLastState(lastState: string, status: IPodContainerStatus | null | undefined) { renderLastState(lastState: string, status: PodContainerStatus | null | undefined) {
const { lastState: lastContainerState = {}} = status ?? {}; const { lastState: lastContainerState = {}} = status ?? {};
const { terminated } = lastContainerState; const { terminated } = lastContainerState;