private static CompressionTestRunner[] GenerateChainedCompressibleRead(CompressionAlgorithm[] compressionAlgorithms) { var testDataPatternV1AtEnd = GenerateByteArray(commonCompressibleData, exampleTestData[CompressionAlgorithm.Pattern_V1]); var testDataArray = new byte[][] { testDataPatternV1AtEnd, }; var result = testDataArray.Select(testData => { var instance = new CompressionTestRunner(); instance.compressionAlgorithmForTest = CompressionAlgorithm.NONE; instance.compressWriteRequest = false; instance.compressWriteRequestBufferOnly = false; instance.compressReadRequest = true; instance.readResponseShouldBeCompressed = true; instance.readResponseShouldBeChained = true; instance.testData = testData; return(instance); }).ToArray(); return(result); }
private static CompressionTestRunner[] GenerateChainedCompressibleWrite(byte[] testData) { var instance = new CompressionTestRunner(); instance.compressionAlgorithmForTest = CompressionAlgorithm.NONE; instance.compressWriteRequest = true; instance.compressWriteRequestBufferOnly = true; instance.compressReadRequest = false; instance.readResponseShouldBeCompressed = false; instance.readResponseShouldBeChained = false; instance.testData = testData; return(new CompressionTestRunner[] { instance, }); }
private void SMB2CompressionTest(CompressionAlgorithm[] compressionAlgorithms, bool enableEncryption, CompressionTestVariant variant) { uint treeId; FILEID fileId; CreateTestFile(compressionAlgorithms, enableEncryption, out treeId, out fileId); var instances = CompressionTestRunner.Generate(variant); foreach (var instance in instances) { instance.Run(client, treeId, fileId); } client.Close(treeId, fileId); client.TreeDisconnect(treeId); client.LogOff(); }
private static CompressionTestRunner[] GenerateBasicChainedReadWrite(CompressionAlgorithm[] compressionAlgorithms) { var instance = new CompressionTestRunner(); instance.compressionAlgorithmForTest = CompressionAlgorithm.NONE; instance.compressWriteRequest = true; instance.compressWriteRequestBufferOnly = false; instance.compressReadRequest = true; instance.readResponseShouldBeCompressed = true; instance.readResponseShouldBeChained = true; instance.testData = exampleTestData[CompressionAlgorithm.Pattern_V1]; var result = new CompressionTestRunner[] { instance, }; return(result); }
private static CompressionTestRunner[] GenerateChainedIncompressibleRead(CompressionAlgorithm[] compressionAlgorithms) { // Use common test data var instance = new CompressionTestRunner(); instance.compressionAlgorithmForTest = CompressionAlgorithm.NONE; instance.compressWriteRequest = false; instance.compressWriteRequestBufferOnly = false; instance.compressReadRequest = true; instance.readResponseShouldBeCompressed = false; instance.readResponseShouldBeChained = false; instance.testData = commonIncompressibleData; var result = new CompressionTestRunner[] { instance, }; return(result); }
private static CompressionTestRunner[] GenerateCompressibleWrite(CompressionAlgorithm[] compressionAlgorithms) { // Use common test data for all supported compression algorithms var result = compressionAlgorithms.Select(compressionAlgorithm => { var instance = new CompressionTestRunner(); instance.compressionAlgorithmForTest = compressionAlgorithm; instance.compressWriteRequest = true; instance.compressWriteRequestBufferOnly = false; instance.compressReadRequest = false; instance.readResponseShouldBeCompressed = false; instance.readResponseShouldBeChained = false; // Use example test data. instance.testData = commonCompressibleData; return(instance); }).ToArray(); return(result); }
private void SMB2CompressionTest(CompressionAlgorithm[] compressionAlgorithms, CompressionTestVariant variant, bool enableEncryption = false, bool enableChainedCompression = false) { uint treeId; FILEID fileId; if (!enableChainedCompression) { compressionAlgorithms = Smb2Utility.GetSupportedCompressionAlgorithms(compressionAlgorithms); } CreateTestFile(compressionAlgorithms, enableEncryption, out treeId, out fileId, enableChainedCompression); var instances = CompressionTestRunner.Generate(compressionAlgorithms, variant); foreach (var instance in instances) { instance.Run(client, treeId, fileId); } client.Close(treeId, fileId); client.TreeDisconnect(treeId); client.LogOff(); }
/// <summary> /// Generate a series of compression test runner with given test variant. /// </summary> /// <param name="variant">Compression test variant to use.</param> /// <returns></returns> public static CompressionTestRunner[] Generate(CompressionTestVariant variant) { CompressionTestRunner[] result = null; switch (variant) { case CompressionTestVariant.BasicReadWrite: { // Use specific test data for all supported compression algorithms result = compressionAlgorithms.Select(compressionAlgorithm => { var instance = new CompressionTestRunner(); instance.compressionAlgorithmForTest = compressionAlgorithm; instance.compressWriteRequest = true; instance.compressReadRequest = true; instance.readResponseShouldBeCompressed = true; // Use example test data. instance.testData = exampleTestData[compressionAlgorithm]; return(instance); }).ToArray(); } break; case CompressionTestVariant.CompressibleWrite: { // Use common test data for all supported compression algorithms result = compressionAlgorithms.Select(compressionAlgorithm => { var instance = new CompressionTestRunner(); instance.compressionAlgorithmForTest = compressionAlgorithm; instance.compressWriteRequest = true; instance.compressReadRequest = false; instance.readResponseShouldBeCompressed = false; // Use example test data. instance.testData = commonCompressibleData; return(instance); }).ToArray(); } break; case CompressionTestVariant.CompressibleRead: { // Use common test data var instance = new CompressionTestRunner(); instance.compressionAlgorithmForTest = CompressionAlgorithm.NONE; instance.compressWriteRequest = false; instance.compressReadRequest = true; instance.readResponseShouldBeCompressed = true; instance.testData = commonCompressibleData; result = new CompressionTestRunner[] { instance }; } break; case CompressionTestVariant.IncompressibleRead: { // Use common test data var instance = new CompressionTestRunner(); instance.compressionAlgorithmForTest = CompressionAlgorithm.NONE; instance.compressWriteRequest = false; instance.compressReadRequest = true; instance.readResponseShouldBeCompressed = false; instance.testData = commonIncompressibleData; result = new CompressionTestRunner[] { instance }; } break; default: throw new InvalidOperationException("Unknown test variant!"); } return(result); }