Example #1
0
            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);
            }
Example #2
0
            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();
        }
Example #4
0
            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);
            }
Example #5
0
            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);
            }
Example #6
0
            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);
            }
Example #7
0
        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);
            }