コード例 #1
0
        public void ParallelPerformance()
        {
            var dt         = DataTableHelper.Generate(10, 5, (i, j) => $"Row {i}, Col {j}");
            var activitity = new DataTableEncryption
            {
                Algorithm = new ActivityFunc <IEncryption>
                {
                    Handler = new AesAlgorithmEncryption()
                },
                Key = new InArgument <string>(CryptoKey),
            };

            long elapsed = 0;

            activitity.ParallelProcessing = false;
            var sw = System.Diagnostics.Stopwatch.StartNew();

            WorkflowTester.Invoke(activitity, GetArgs(dt));
            elapsed = sw.ElapsedMilliseconds;

            activitity.ParallelProcessing = true;
            var args = GetArgs(dt);

            args.Add(nameof(DataTableEncryption.Sort), "Col0 DESC");

            sw.Restart();
            WorkflowTester.Invoke(activitity, args);
            sw.Stop();

            Trace.Write($"Parallel: No = {elapsed}, Yes = {sw.ElapsedMilliseconds}");
            Assert.IsTrue(sw.ElapsedMilliseconds < elapsed);
        }
コード例 #2
0
        public void Default(string alg)
        {
            CodeActivity <IEncryption> handler = null;

            switch (alg)
            {
            case nameof(AesAlgorithmEncryption):
                handler = new AesAlgorithmEncryption();
                break;

            case nameof(DESAlgorithmEncryption):
                handler = new DESAlgorithmEncryption();
                break;

            case nameof(RC2AlgorithmEncryption):
                handler = new RC2AlgorithmEncryption();
                break;

            case nameof(RijndaelAlgorithmEncryption):
                handler = new RijndaelAlgorithmEncryption();
                break;

            case nameof(TripleDESAlgorithmEncryption):
                handler = new TripleDESAlgorithmEncryption();
                break;
            }

            var dt = DataTableHelper.CreateDataTable <object>(6, new[]
            {
                new object[] { "Brazil", null, DBNull.Value, 1, "Latin", "America" },
                new object[] { "Canada", "", DateTime.Today, 0, "North", "America" }
            });

            var activity = new DataTableEncryption()
            {
                Algorithm = new ActivityFunc <IEncryption>()
                {
                    Handler = handler
                },
                ParallelProcessing = false,
                Key = new InArgument <string>(CryptoKey)
            };

            var encrypted = WorkflowTester.Invoke(activity, GetArgs(dt));

            var row = encrypted.Rows[0];

            CollectionAssert.AreNotEqual(new object[] { "Brazil", 1, "Latin", "America" }, new object[] { row["Col0"], row["Col3"], row["Col4"], row["Col5"] });
            CollectionAssert.AreEqual(new object[] { DBNull.Value, DBNull.Value }, new object[] { row["Col1"], row["Col2"] });

            row = encrypted.Rows[1];
            CollectionAssert.AreNotEqual(new object[] { "Canada", DateTime.Today, 0, "North", "America" }, new object[] { row["Col0"], row["Col2"], row["Col3"], row["Col4"], row["Col5"] });
            Assert.AreEqual("", row[1]);

            activity.Action = Core.Enums.CryptoActions.Decrypt;
            var decrypted = WorkflowTester.Invoke(activity, GetArgs(encrypted));

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    var dr = dt.Rows[i];
                    if (dr.IsNull(j))
                    {
                        Assert.AreEqual(dr[j], decrypted.Rows[i][j]);
                    }
                    else
                    {
                        Assert.AreEqual(dr[j].ToString(), decrypted.Rows[i][j]);
                    }
                }
            }
        }