From 7974177e30c01e02f9b6429fdf418515cd63bde9 Mon Sep 17 00:00:00 2001 From: maayarosama Date: Sun, 12 Jan 2025 12:39:54 +0200 Subject: [PATCH] Refactoring workload test file and fixing serialize and deserialize failing qsfs test --- .../tests/modules/workload.test.ts | 126 +++++------------- 1 file changed, 36 insertions(+), 90 deletions(-) diff --git a/packages/grid_client/tests/modules/workload.test.ts b/packages/grid_client/tests/modules/workload.test.ts index e2e4b04660..dfd3257c41 100644 --- a/packages/grid_client/tests/modules/workload.test.ts +++ b/packages/grid_client/tests/modules/workload.test.ts @@ -35,7 +35,6 @@ import { PublicIPv4 } from "../../src/zos/ipv4"; let workload: Workload; -// Creates instances of workload data types and set their data const createDataInstance = (type: WorkloadTypes) => { let instance; const network = new ZmachineNetwork(); @@ -50,37 +49,16 @@ const createDataInstance = (type: WorkloadTypes) => { mycelium.hex_key = "abc123"; const rootfs_size = 2; - const size = 100 * 1025 ** 2; + const size = 100 * 1024 ** 2; const qsfsConfig = new QuantumSafeFSConfig(); - qsfsConfig.minimal_shards = 2; - qsfsConfig.expected_shards = 3; - qsfsConfig.redundant_groups = 0; - qsfsConfig.redundant_nodes = 0; - qsfsConfig.max_zdb_data_dir_size = 2; const encryption = new Encryption(); - (encryption.algorithm = "algorithm"), (encryption.key = "EncryptionKey12345678"); - qsfsConfig.encryption = encryption; const meta = new QuantumSafeMeta(); - meta.type = "qsfs"; const config = new QuantumSafeConfig(); - config.prefix = "qsfs"; - config.encryption = encryption; const backends = new ZdbBackend(); - backends.address = "localhost"; - backends.namespace = "http://localhost"; - backends.password = "password"; - - config.backends = [backends]; - meta.config = config; - qsfsConfig.meta = meta; const groups = new ZdbGroup(); - groups.backends = [backends]; - qsfsConfig.groups = [groups]; - const compresion = new QuantumCompression(); - compresion.algorithm = "algorithm"; - qsfsConfig.compression = compresion; + const compression = new QuantumCompression(); + const qsfsCache = 262144000; - const qsfsCache = 262144000; // Fixed cache size switch (type) { case WorkloadTypes.zmachine: instance = new Zmachine(); @@ -111,17 +89,18 @@ const createDataInstance = (type: WorkloadTypes) => { instance.env = { key: "value" }; instance.corex = false; instance.gpu = ["AMD", "NIVIDIA"]; - break; + case WorkloadTypes.zmount: instance = new Zmount(); instance.size = size; - break; + case WorkloadTypes.volume: instance = new Volume(); instance.size = size; break; + case WorkloadTypes.network: instance = new Znet(); instance.subnet = "10.0.0.1/32"; @@ -144,35 +123,61 @@ const createDataInstance = (type: WorkloadTypes) => { instance = new PublicIP(); instance.v4 = true; instance.v6 = false; - break; + case WorkloadTypes.ipv4: instance = new PublicIPv4(); break; + case WorkloadTypes.qsfs: instance = new QuantumSafeFS(); + + qsfsConfig.minimal_shards = 2; + qsfsConfig.expected_shards = 3; + qsfsConfig.redundant_groups = 0; + qsfsConfig.redundant_nodes = 0; + qsfsConfig.max_zdb_data_dir_size = 2; + encryption.algorithm = "algorithm"; + encryption.key = "EncryptionKey12345678"; + qsfsConfig.encryption = encryption; + meta.type = "qsfs"; + config.prefix = "qsfs"; + config.encryption = encryption; + backends.address = "localhost"; + backends.namespace = "http://localhost"; + backends.password = "password"; + groups.backends = [backends]; + qsfsConfig.groups = [groups]; + config.backends = [backends]; + meta.config = config; + qsfsConfig.meta = meta; + compression.algorithm = "algorithm"; + qsfsConfig.compression = compression; + instance.cache = qsfsCache; instance.config = qsfsConfig; break; + case WorkloadTypes.zlogs: instance = new Zlogs(); instance.zmachine = "zmachine"; instance.output = "zlog"; break; + case WorkloadTypes.gatewayfqdnproxy: instance = new GatewayFQDNProxy(); instance.fqdn = "dmftv9qfff.gent02.dev.grid.tf"; instance.tls_passthrough = false; instance.backends = ["http://185.206.122.43:80"]; - break; + case WorkloadTypes.gatewaynameproxy: instance = new GatewayNameProxy(); instance.name = "GatewayNameProxy"; instance.tls_passthrough = false; instance.backends = ["http://185.206.122.43:80"]; - break; + default: throw new Error(`Invalid WorkloadType: ${type}`); } @@ -180,7 +185,6 @@ const createDataInstance = (type: WorkloadTypes) => { return instance; }; -// Test for each WorkloadType describe.each(Object.values(WorkloadTypes))("Workload Tests for %s", type => { beforeEach(() => { const dataInstance = createDataInstance(type); @@ -211,71 +215,13 @@ describe.each(Object.values(WorkloadTypes))("Workload Tests for %s", type => { expect(workload.result.created).toBeGreaterThan(0); expect(workload.result.state).toBe(ResultStates.ok); expect(workload.result.message).toBe("Deployment successful"); - - switch (type) { - case WorkloadTypes.zmachine: - expect(workload.data).toBeInstanceOf(Zmachine); - break; - case WorkloadTypes.zmount: - expect(workload.data).toBeInstanceOf(Zmount); - break; - case WorkloadTypes.volume: - expect(workload.data).toBeInstanceOf(Volume); - break; - case WorkloadTypes.network: - expect(workload.data).toBeInstanceOf(Znet); - break; - case WorkloadTypes.zdb: - expect(workload.data).toBeInstanceOf(Zdb); - break; - case WorkloadTypes.ip: - expect(workload.data).toBeInstanceOf(PublicIP); - break; - case WorkloadTypes.ipv4: - expect(workload.data).toBeInstanceOf(PublicIPv4); - break; - - case WorkloadTypes.qsfs: - expect(workload.data).toBeInstanceOf(QuantumSafeFS); - break; - case WorkloadTypes.zlogs: - expect(workload.data).toBeInstanceOf(Zlogs); - break; - case WorkloadTypes.gatewayfqdnproxy: - expect(workload.data).toBeInstanceOf(GatewayFQDNProxy); - break; - case WorkloadTypes.gatewaynameproxy: - expect(workload.data).toBeInstanceOf(GatewayNameProxy); - break; - default: - throw new Error("Unhandled WorkloadType"); - } }); test("should correctly serialize and deserialize Workload", () => { const serialized = JSON.stringify(workload); const deserialized = plainToClass(Workload, JSON.parse(serialized)); - - if (deserialized.data) { - if (workload.type === WorkloadTypes.qsfs) { - deserialized.data = plainToClass(createDataInstance(type).constructor, deserialized.data); - deserialized.data = plainToClass(QuantumSafeFSConfig, deserialized.data); - // deserialized.data.config.encryption = plainToClass(Encryption, deserialized.data.config.encryption); - - // Deserializing nested structures like ZdbBackend, ZdbGroup, etc. - // deserialized.data.config.groups = deserialized.data.config.groups.map(group => - // plainToClass(ZdbGroup, group) - // ); - } else { - deserialized.data = plainToClass(createDataInstance(type).constructor, deserialized.data); - } - } - - // if (deserialized.data) { - // } - expect(deserialized).toBeInstanceOf(Workload); - expect(deserialized.challenge()).toBe(workload.challenge()); + expect(deserialized).toEqual(workload); }); test("should correctly compute the challenge string", () => {