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); }
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]); } } } }