def test_snapshot_resume_latency(network_config, bin_cloner_path): """Test scenario: Snapshot load performance measurement.""" logger = logging.getLogger("snapshot_load") artifacts = ArtifactCollection(_test_images_s3_bucket()) # Testing matrix: # - Guest kernel: Linux 4.14 # - Rootfs: Ubuntu 18.04 # - Microvm: 2vCPU with 256/512 MB RAM # TODO: Multiple microvm sizes must be tested in the async pipeline. microvm_artifacts = ArtifactSet(artifacts.microvms(keyword="2vcpu_512mb")) microvm_artifacts.insert(artifacts.microvms(keyword="2vcpu_256mb")) kernel_artifacts = ArtifactSet(artifacts.kernels(keyword="4.14")) disk_artifacts = ArtifactSet(artifacts.disks(keyword="ubuntu")) # Create a test context and add builder, logger, network. test_context = TestContext() test_context.custom = { 'builder': MicrovmBuilder(bin_cloner_path), 'network_config': network_config, 'logger': logger, 'snapshot_type': SnapshotType.FULL, } # Create the test matrix. test_matrix = TestMatrix( context=test_context, artifact_sets=[microvm_artifacts, kernel_artifacts, disk_artifacts]) test_matrix.run_test(_test_snapshot_resume_latency)
def test_network_tcp_throughput(bin_cloner_path, results_file_dumper): """Test network throughput driver for multiple artifacts.""" logger = logging.getLogger("network_tcp_throughput") artifacts = ArtifactCollection(_test_images_s3_bucket()) microvm_artifacts = ArtifactSet(artifacts.microvms(keyword="2vcpu_1024mb")) microvm_artifacts.insert(artifacts.microvms(keyword="1vcpu_1024mb")) kernel_artifacts = ArtifactSet(artifacts.kernels()) disk_artifacts = ArtifactSet(artifacts.disks(keyword="ubuntu")) # Create a test context and add builder, logger, network. test_context = TestContext() test_context.custom = { 'builder': MicrovmBuilder(bin_cloner_path), 'logger': logger, 'name': 'network_tcp_throughput', 'results_file_dumper': results_file_dumper } test_matrix = TestMatrix(context=test_context, artifact_sets=[ microvm_artifacts, kernel_artifacts, disk_artifacts ]) test_matrix.run_test(iperf_workload)
def test_block_performance(bin_cloner_path): """Test network throughput driver for multiple artifacts.""" logger = logging.getLogger(TEST_ID) artifacts = ArtifactCollection(_test_images_s3_bucket()) microvm_artifacts = ArtifactSet(artifacts.microvms(keyword="2vcpu_1024mb")) microvm_artifacts.insert(artifacts.microvms(keyword="1vcpu_1024mb")) kernel_artifacts = ArtifactSet(artifacts.kernels()) disk_artifacts = ArtifactSet(artifacts.disks(keyword="ubuntu")) # Create a test context and add builder, logger, network. test_context = TestContext() test_context.custom = { 'builder': MicrovmBuilder(bin_cloner_path), 'logger': logger, 'name': TEST_ID } print(f"CPU model: {get_cpu_model_name()}.") test_matrix = TestMatrix(context=test_context, artifact_sets=[ microvm_artifacts, kernel_artifacts, disk_artifacts ]) test_matrix.run_test(fio_workload)
def test_block_performance_sync(bin_cloner_path, results_file_dumper): """ Test block performance for multiple vm configurations. @type: performance """ logger = logging.getLogger(TEST_ID) artifacts = ArtifactCollection(_test_images_s3_bucket()) vm_artifacts = ArtifactSet(artifacts.microvms(keyword="1vcpu_1024mb")) vm_artifacts.insert(artifacts.microvms(keyword="2vcpu_1024mb")) kernel_artifacts = ArtifactSet(artifacts.kernels()) disk_artifacts = ArtifactSet(artifacts.disks(keyword="ubuntu")) logger.info("Testing on processor %s", get_cpu_model_name()) # Create a test context and add builder, logger, network. test_context = TestContext() test_context.custom = { 'builder': MicrovmBuilder(bin_cloner_path), 'logger': logger, 'name': TEST_ID, 'results_file_dumper': results_file_dumper, 'io_engine': 'Sync' } test_matrix = TestMatrix( context=test_context, artifact_sets=[vm_artifacts, kernel_artifacts, disk_artifacts]) test_matrix.run_test(fio_workload)
def test_vsock_throughput(bin_cloner_path): """Test vsock throughput driver for multiple artifacts.""" logger = logging.getLogger("vsock_throughput") artifacts = ArtifactCollection(_test_images_s3_bucket()) microvm_artifacts = ArtifactSet(artifacts.microvms(keyword="1vcpu_1024mb")) microvm_artifacts.insert(artifacts.microvms(keyword="2vcpu_1024mb")) kernel_artifacts = ArtifactSet( artifacts.kernels(keyword="vmlinux-4.14.bin")) disk_artifacts = ArtifactSet(artifacts.disks(keyword="ubuntu")) # Create a test context and add builder, logger, network. test_context = TestContext() test_context.custom = { 'builder': MicrovmBuilder(bin_cloner_path), 'logger': logger, 'name': 'vsock_throughput' } print(get_cpu_model_name()) test_matrix = TestMatrix(context=test_context, artifact_sets=[ microvm_artifacts, kernel_artifacts, disk_artifacts ]) test_matrix.run_test(iperf_workload)
def test_network_tcp_throughput(bin_cloner_path, results_file_dumper): """ Test network throughput for multiple vm confgurations. @type: performance """ logger = logging.getLogger(TEST_ID) artifacts = ArtifactCollection(_test_images_s3_bucket()) microvm_artifacts = ArtifactSet(artifacts.microvms(keyword="1vcpu_1024mb")) microvm_artifacts.insert(artifacts.microvms(keyword="2vcpu_1024mb")) kernel_artifacts = ArtifactSet(artifacts.kernels()) disk_artifacts = ArtifactSet(artifacts.disks(keyword="ubuntu")) logger.info("Testing on processor %s", get_cpu_model_name()) # Create a test context and add builder, logger, network. test_context = TestContext() test_context.custom = { "builder": MicrovmBuilder(bin_cloner_path), "logger": logger, "name": TEST_ID, "results_file_dumper": results_file_dumper, } test_matrix = TestMatrix( context=test_context, artifact_sets=[microvm_artifacts, kernel_artifacts, disk_artifacts], ) test_matrix.run_test(iperf_workload)
def test_snapshot_create_diff_latency(network_config, bin_cloner_path, results_file_dumper): """ Test scenario: Diff snapshot create performance measurement. @type: performance """ logger = logging.getLogger("snapshot_sequence") artifacts = ArtifactCollection(_test_images_s3_bucket()) # Testing matrix: # - Guest kernel: All supported ones # - Rootfs: Ubuntu 18.04 # - Microvm: 2vCPU with 256/512 MB RAM # TODO: Multiple microvm sizes must be tested in the async pipeline. microvm_artifacts = ArtifactSet(artifacts.microvms(keyword="2vcpu_512mb")) microvm_artifacts.insert(artifacts.microvms(keyword="2vcpu_256mb")) kernel_artifacts = ArtifactSet(artifacts.kernels()) disk_artifacts = ArtifactSet(artifacts.disks(keyword="ubuntu")) # Create a test context and add builder, logger, network. test_context = TestContext() test_context.custom = { 'builder': MicrovmBuilder(bin_cloner_path), 'network_config': network_config, 'logger': logger, 'snapshot_type': SnapshotType.DIFF, 'name': 'create_diff_latency', 'results_file_dumper': results_file_dumper } # Create the test matrix. test_matrix = TestMatrix(context=test_context, artifact_sets=[ microvm_artifacts, kernel_artifacts, disk_artifacts ]) test_matrix.run_test(_test_snapshot_create_latency)
def test_snapshot_create_full_latency(network_config, bin_cloner_path, results_file_dumper): """ Test scenario: Full snapshot create performance measurement. @type: performance """ logger = logging.getLogger("snapshot_sequence") artifacts = ArtifactCollection(_test_images_s3_bucket()) # Testing matrix: # - Guest kernel: Linux 4.14 # - Rootfs: Ubuntu 18.04 # - Microvm: 2vCPU with 256/512 MB RAM # TODO: Multiple microvm sizes must be tested in the async pipeline. microvm_artifacts = ArtifactSet(artifacts.microvms(keyword="2vcpu_512mb")) microvm_artifacts.insert(artifacts.microvms(keyword="2vcpu_256mb")) kernel_artifacts = ArtifactSet(artifacts.kernels()) disk_artifacts = ArtifactSet(artifacts.disks(keyword="ubuntu")) # Create a test context and add builder, logger, network. test_context = TestContext() test_context.custom = { "builder": MicrovmBuilder(bin_cloner_path), "network_config": network_config, "logger": logger, "snapshot_type": SnapshotType.FULL, "name": "create_full_latency", "results_file_dumper": results_file_dumper, } # Create the test matrix. test_matrix = TestMatrix( context=test_context, artifact_sets=[microvm_artifacts, kernel_artifacts, disk_artifacts], ) test_matrix.run_test(_test_snapshot_create_latency)
def test_block_performance_async(bin_cloner_path, results_file_dumper): """ Test block performance for multiple vm configurations. @type: performance """ logger = logging.getLogger(TEST_ID) if not is_io_uring_supported(): logger.info("io_uring is not supported. Skipping..") pytest.skip("Cannot run async if io_uring is not supported") artifacts = ArtifactCollection(_test_images_s3_bucket()) vm_artifacts = ArtifactSet(artifacts.microvms(keyword="1vcpu_1024mb")) vm_artifacts.insert(artifacts.microvms(keyword="2vcpu_1024mb")) kernel_artifacts = ArtifactSet(artifacts.kernels()) disk_artifacts = ArtifactSet(artifacts.disks(keyword="ubuntu")) logger.info("Testing on processor %s", get_cpu_model_name()) # Create a test context and add builder, logger, network. test_context = TestContext() test_context.custom = { "builder": MicrovmBuilder(bin_cloner_path), "logger": logger, "name": TEST_ID, "results_file_dumper": results_file_dumper, "io_engine": "Async", } test_matrix = TestMatrix( context=test_context, artifact_sets=[vm_artifacts, kernel_artifacts, disk_artifacts], ) test_matrix.run_test(fio_workload)