Example #1
0
        public void PersistToXmlTest()
        {
            XmlNode packageRef = Helper.GetXmlNodeFromString(Xml);
            var     target     = new PackageRef(packageRef);
            string  actual     = target.PersistToXml();

            Assert.AreEqual(Xml, actual);
        }
Example #2
0
        public void PackageRefConstructorTest1()
        {
            var target = new PackageRef("Test", "C:\\Temp\\Package.dtsx", PackageStorageType.FileSystem);

            Assert.AreEqual("Test", target.Name);
            Assert.AreEqual("C:\\Temp\\Package.dtsx", target.PackagePath);
            Assert.AreEqual(string.Empty, target.Server);
            Assert.AreEqual(PackageStorageType.FileSystem, target.StorageType);
        }
        public void TestInvalidCharacterGitSHA1IsNotCommitReference()
        {
            var packageRef = new PackageRef
            {
                GitRef = "096932a9ea478c049802f5e2eb6538e37336234h",
            };

            _assert.False(packageRef.IsStaticReference);
        }
Example #4
0
        public void LoadPackageFileSystemTest()
        {
            var file    = UnpackToFile(TestPackageResource);
            var target  = new PackageRef("Test", file, PackageStorageType.FileSystem);
            var package = target.LoadPackage();

            Assert.IsNotNull(package);
            Assert.AreEqual("SimplePackage", package.Name);
        }
Example #5
0
        public void TestInvalidCharacterGitSHA1IsNotCommitReference()
        {
            var packageRef = new PackageRef
            {
                GitRef = "096932a9ea478c049802f5e2eb6538e37336234h",
            };

            Assert.False(packageRef.IsCommitReference);
        }
        public void TestObviouslyNotGitSHA1IsNotCommitReference()
        {
            var packageRef = new PackageRef
            {
                GitRef = "v3",
            };

            _assert.False(packageRef.IsStaticReference);
        }
Example #7
0
        public void TestGitSHA1IsCommitReference()
        {
            var packageRef = new PackageRef
            {
                GitRef = "096932a9ea478c049802f5e2eb6538e37336234c",
            };

            Assert.True(packageRef.IsCommitReference);
        }
Example #8
0
        public void TestObviouslyNotGitSHA1IsNotCommitReference()
        {
            var packageRef = new PackageRef
            {
                GitRef = "v3",
            };

            Assert.False(packageRef.IsCommitReference);
        }
Example #9
0
        public void TestTooShortGitSHA1IsNotCommitReference()
        {
            var packageRef = new PackageRef
            {
                GitRef = "096932a9ea478c049802f5e2eb6538e37336234",
            };

            Assert.False(packageRef.IsCommitReference);
        }
        public void TestGitSHA1IsCommitReference()
        {
            var packageRef = new PackageRef
            {
                GitRef = "096932a9ea478c049802f5e2eb6538e37336234c",
            };

            _assert.True(packageRef.IsStaticReference);
        }
Example #11
0
        public void PackageRefConstructorTest2()
        {
            var target = new PackageRef("Test", "C:\\Temp\\Package.dtsx", PackageStorageType.MSDB, "localhost");

            Assert.AreEqual("Test", target.Name);
            Assert.AreEqual("C:\\Temp\\Package.dtsx", target.PackagePath);
            Assert.AreEqual("localhost", target.Server);
            Assert.AreEqual(PackageStorageType.MSDB, target.StorageType);
        }
        public void TestTooLongGitSHA1IsNotCommitReference()
        {
            var packageRef = new PackageRef
            {
                GitRef = "096932a9ea478c049802f5e2eb6538e37336234cd",
            };

            _assert.False(packageRef.IsStaticReference);
        }
Example #13
0
        public void LoadPackageFileSystemEnvironmentVariableTest()
        {
            var file = UnpackToFile(TestPackageResource);

            file = file.Replace(Environment.ExpandEnvironmentVariables("%TMP%"), "%TMP%");
            var target  = new PackageRef("Test", file, PackageStorageType.FileSystem);
            var package = target.LoadPackage();

            Assert.IsNotNull(package);
            Assert.AreEqual("SimplePackage", package.Name);
        }
Example #14
0
        public PackageArtifact Find(PackageRef refName)
        {
            // First, attempt via name
            PackageArtifact pkg = this.Find(o => o.PackageLocation.Equals(refName, true));

            if (null != pkg)
            {
                return(pkg);
            }
            else             // Warn and then try forgetting the Version
            {
                System.Diagnostics.Trace.Write(String.Format("Can't locate package '{0}', attempting to locate older version", refName.ToString("%s%%d%_%A%%i%%r%%v%")), "warn1");
                return(this.Find(o => o.PackageLocation.Equals(refName, false)));
            }
        }
Example #15
0
        private void TreeTestBeforeSelect(object sender, TreeViewCancelEventArgs e)
        {
            if (treeTest.SelectedNode == null)
            {
                return;
            }

            _originalItem = treeTest.SelectedNode.Tag;

            IValidate item = _originalItem as IValidate;

            if (item != null)
            {
                Validate(item, treeTest.SelectedNode);
            }

            // Update Tree for label changes
            ConnectionRef connectionRef = _originalItem as ConnectionRef;

            if (connectionRef != null)
            {
                treeTest.SelectedNode.Text = connectionRef.ReferenceName;
                return;
            }

            PackageRef packageRef = _originalItem as PackageRef;

            if (packageRef != null)
            {
                treeTest.SelectedNode.Text = packageRef.Name;
                return;
            }

            Test test = _originalItem as Test;

            if (test != null)
            {
                treeTest.SelectedNode.Text = test.Name;
                return;
            }

            SsisAssert ssisAssert = _originalItem as SsisAssert;

            if (ssisAssert != null)
            {
                treeTest.SelectedNode.Text = ssisAssert.Name;
            }
        }
Example #16
0
        public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType)
        {
            if (destType == typeof(string) && value is PackageRef)
            {
                PackageRef pRef = (PackageRef)value;

                return(pRef.Name);
            }
            if (destType == typeof(string) && value is string)
            {
                //Test test = (Test)context.Instance;
                //PackageRef pRef = test.TestSuite.PackageRefs[(string)value];

                return(value);
            }
            return(base.ConvertTo(context, culture, value, destType));
        }
Example #17
0
        //[Ignore("The SSIS Catalog cannot be tested statically.")]
        public void LoadPackageFromProjectInSsisCatalogTest()
        {
            SsisTestSuite testSuite = new SsisTestSuite();

            var packageRef = new PackageRef("15_Users_Dataset.dtsx", "15_Users_Dataset.dtsx", PackageStorageType.SsisCatalog, @".\SQL2017")
            {
                ProjectPath = @"ssisUnit\ssisUnitLearning"
            };

            testSuite.PackageList.Add(packageRef.Name, packageRef);

            object loadedProject;

            var packageToTest = SsisUnit.Helper.LoadPackage(testSuite, packageRef.PackagePath, null, packageRef.ProjectPath, out loadedProject);

            Assert.IsNotNull(packageToTest);
            Assert.IsNotNull(loadedProject);
        }
Example #18
0
        public void LoadPackageFromProjectInFileSystemTest()
        {
            var projectFile = UnpackToFile("UTssisUnit.TestPackages.ISPACTesting.ispac", true);
            var testSuite   = new SsisTestSuite();
            var packageRef  = new PackageRef("TestPackage", "ExecuteSqlTask.dtsx", PackageStorageType.FileSystem, null)
            {
                ProjectPath = projectFile
            };

            testSuite.PackageList.Add(packageRef.Name, packageRef);

            object loadedProject;

            var packageToTest = SsisUnit.Helper.LoadPackage(testSuite, packageRef.PackagePath, null, packageRef.ProjectPath, out loadedProject);

            Assert.IsNotNull(packageToTest);
            Assert.IsNotNull(loadedProject);
        }
Example #19
0
        public Package Find(PackageRef refName)
        {
            string name = String.Format("{0}/{1}/{2}/{3}/{4}/{5}/{6}",
                                        refName.Realm ?? "Universal",
                                        refName.Root,
                                        refName.Section,
                                        refName.SubSection,
                                        refName.Domain,
                                        refName.Artifact,
                                        refName.Id);

            // First, attempt via name

            if (this.ContainsKey(name))
            {
                return(this[name]);
            }

            return(null);
        }
Example #20
0
        public void AddPackageRef()
        {
            TreeNode prNode  = treeTest.Nodes[0].Nodes.Find("Package List", false)[0];
            int      counter = 1;

            while (_testSuite.PackageList.ContainsKey("PackageRef" + counter.ToString(CultureInfo.InvariantCulture)))
            {
                counter++;
            }
            var pr = new PackageRef("PackageRef" + counter.ToString(CultureInfo.InvariantCulture), string.Empty, PackageStorageType.FileSystem);

            _testSuite.PackageList.Add(pr.Name, pr);
            var tn = new TreeNode(pr.Name)
            {
                Tag = pr
            };

            prNode.Nodes.Add(tn);
            tn.EnsureVisible();
            treeTest.SelectedNode = tn;
        }
        public void RunDataCompareCommandSetWithOtherTestTest()
        {
            var ts      = new SsisTestSuite();
            var connRef = new ConnectionRef("TestConn", "Data Source=localhost;Initial Catalog=AdventureWorks2012;Integrated Security=SSPI", ConnectionRef.ConnectionTypeEnum.AdoNet, "System.Data.SqlClient");
            var pkgRef  = new PackageRef("pkg", _dtsxFilePath, PackageStorageType.FileSystem);

            ts.ConnectionList.Add(connRef.ReferenceName, connRef);
            ts.PackageList.Add(pkgRef.Name, pkgRef);
            var dataset = new Dataset(
                ts,
                "Test",
                connRef,
                false,
                @"SELECT 
CAST(1 AS INT) AS ColInt, 
CAST('Test' AS VARCHAR(50)) AS ColVarChar, 
CAST(N'Test' AS NVARCHAR(50)) AS ColNVarChar, 
CAST('1900-01-01' AS DATETIME) AS ColDateTime");

            ts.Datasets.Add(dataset.Name, dataset);

            var target = new DataCompareCommand(ts, "Test", dataset, dataset);
            var test   = new Test(ts, "TestCase1", "pkg", null, "\\Package");
            var assert = new SsisAssert(ts, test, "Assert1", true, false);

            assert.Command = target;
            test.Asserts.Add("Assert1", assert);
            ts.Tests.Add("TestCase1", test);
            var test2   = new Test(ts, "TestCase2", "pkg", null, "\\Package");
            var assert2 = new SsisAssert(ts, test2, "Assert2", false, false);

            assert2.Command = new FileCommand(ts, "Exists", @"C:\Test\Test.pkg", string.Empty);
            test2.Asserts.Add("Assert2", assert2);
            ts.Tests.Add("TestCase2", test2);

            var actual = ts.Execute();

            Assert.AreEqual(4, ts.Statistics.GetStatistic(StatisticEnum.AssertPassedCount));
        }
Example #22
0
    //协程加载资源包,同时存在多个协程
    IEnumerator LoadResourceCoroutineMulti(string rootPackage, RequestArg request_arg)
    {
        while (null == assetBundleManifest)
            yield return new WaitForSeconds(0.1f);

        do
        {
            //如果协程数量超过最大数量限制,在这里等待直到协程数量减少后开始继续执行
            if (m_nCoroutineCount < m_nCurrentMaxCoroutineCount)
                break;
            yield return new WaitForSeconds(0.1f);
        } while (true);

        if (request_arg.eType == TRequestType.EResource)
        {
            ((RequestArg_Resource)request_arg).resource_ref.AddRef();
        }
        //协程计数加1
        m_nCoroutineCount++;

        List<PackageRef> ltPackageRefed = new List<PackageRef>();   //当前协成中所有引用到的包,为了防止垃圾回收,要在这个协成执行过程中增加包的引用技术

        List<WWWPakcageLoader> ltLoader = new List<WWWPakcageLoader>();
        List<WWWPakcageLoader> ltLoaderFinish = new List<WWWPakcageLoader>();

        List<string> ltPackageToLoad = new List<string>();
        ltPackageToLoad.Add(rootPackage);
        int nPackageIndex = 0;

        while (ltLoader.Count > 0 || ltPackageToLoad.Count > 0)
        {
            //看看正在加载的资源有没有加载完
            for (int i = 0; i < ltLoader.Count; i++)
            {
                if (ltLoader[i].www.isDone)
                {
                    ltLoader[i].Pack.bundle = ltLoader[i].www.assetBundle;

                    if (ltLoader[i].Pack.bundle == null)
                    {
                        ltLoader[i].Pack.error = 2;
                        OnRequestPackageFail(request_arg, ltLoader[i].Pack.error);
                        DebugTool.LogError("load error, bundle is null with name: ", ltLoader[i].Pack.name, " strConDebugName: ");

                    }
                    ltLoaderFinish.Add(ltLoader[i]);
                    if (ltLoader[i].www.error != null)
                    {
                        //包加载错误
                        ltLoader[i].Pack.error = 1;
                        OnRequestPackageFail(request_arg, ltLoader[i].Pack.error);
                        DebugTool.LogError("load package error: [", ltLoader[i].Pack.name, "]");
                    }
                    ltLoader[i].www.Dispose();
                    ltLoader[i].www = null;
                }
            }

            //从加载列表中移除已经加载完毕的资源包
            for (int j = 0; j < ltLoaderFinish.Count; ++j)
            {
                ltLoader.Remove(ltLoaderFinish[j]);
            }
            ltLoaderFinish.Clear();

            if (ltPackageToLoad.Count > 0 && ltLoader.Count < m_nCurrentMaxLoaderCount)
            {
                string load_package_name = ltPackageToLoad[0];
                ltPackageToLoad.RemoveAt(0);

                if (onLoadingPackage != null)
                    onLoadingPackage("loading: " + load_package_name);
                PackageRef load_package = GetExistPackageRef(load_package_name);
                if (load_package == null)
                {
                    //此包在所有的加载协程里未找到
                    load_package = new PackageRef(load_package_name);
                    AddPackageRef(load_package);

                    ltPackageRefed.Add(load_package);
                    load_package.use++;

                    WWWPakcageLoader loader = null;
                    string url = "";

                    url = SourcePath + GetBundleNameInManifest(load_package_name);

                    if (!url.Contains("://"))
                    {
                        url = "file://" + url;
                    }
                    loader = new WWWPakcageLoader(load_package, url);

                    ltLoader.Add(loader);
                }
                else if (load_package.error != 0)
                {
                    ltPackageRefed.Add(load_package);
                    load_package.use++;

                    DebugTool.LogError("other load package error: [", load_package.name, "]");
                    OnRequestPackageFail(request_arg, load_package.error);
                }
                else if (load_package.bundle == null)
                {
                    //此包其它协程正在加载,添加到链表里,在while里做检测
                    //                     ltOtherPakcageToLoad.Add(load_package);
                    //
                    //                     ltPackageRefed.Add(load_package);
                    //                     load_package.use++;

                }
                else
                {
                    ltPackageRefed.Add(load_package);
                    load_package.use++;
                }

                nPackageIndex++;
                if (nPackageIndex == 1)
                {
                    UFileInfo fileInfo = UFile.Instance.GetFileInfo(load_package_name);
                    if (null == fileInfo)
                    {
                        Debug.LogError("cant find fileInfo : " + load_package_name);
                    }
                    else
                    {
                        string[] deps = fileInfo.dependencies;
                        for (int i = 0; i < deps.Length; i++)
                        {
                            ltPackageToLoad.Add(deps[i]);
                        }
                    }
                }
            }
            yield return new WaitForEndOfFrame();
        }

        if (onLoadingPackage != null)
        {
            if (request_arg.eType == TRequestType.EResource)
                onLoadingPackage("loading model...");
            else if (request_arg.eType == TRequestType.EScene)
                onLoadingPackage("loading scene...");
            else
                onLoadingPackage("loading init package...");
        }

        switch (request_arg.eType)
        {
            case TRequestType.EResource:
                {
                    RequestArg_Resource arg_resource = (RequestArg_Resource)request_arg;

                    PackageRef package = GetExistPackageRef(rootPackage);
                    if (package != null && package.bundle != null)
                    {
                        AssetBundleRequest objRequest = null;

                        objRequest = package.bundle.LoadAssetAsync(UnityTools.GetAssetnameInPackage(arg_resource.path).Trim().ToLower(), typeof(UnityEngine.Object));

                        yield return objRequest;

                        UnityEngine.Object resObject = null;

                        try
                        {
                            resObject = objRequest.asset;
                        }
                        catch (System.Exception e)
                        {
                            DebugTool.LogError("Get asset Error: ", arg_resource.path, " error: ", e.Message);
                        }

                        if (resObject != null)
                        {
                            arg_resource.resource_ref.SetObject(resObject);
                        }
                        else
                        {
                            arg_resource.resource_ref.SetError(EObjectError);
                        }

                    }
                    else
                    {
                        arg_resource.resource_ref.SetError(EObjectError);
                    }
                }
                break;
            case TRequestType.EScene:
                //LoadSceneInPackage((RequestArg_Scene)request_arg);
                break;
            case TRequestType.EInitPackage:
                {
                    RequestArg_InitPackage arg_initpackage = (RequestArg_InitPackage)request_arg;
                    if (arg_initpackage != null && arg_initpackage.evtListener != null)
                    {
                        arg_initpackage.evtListener(GetExistPackageRef(rootPackage), new InitPackageArgs(true));
                    }
                }
                break;
        }

        if (request_arg.eType != TRequestType.EInitPackage)
        {
            //ReleasePackageUseCnt(ltPackageRefed, strConDebugName);
        }

        if (request_arg.eType == TRequestType.EResource)
        {
            //在减引用计数之后在调用回调,这样在回调里就可以释放资源包了
            ((RequestArg_Resource)request_arg).resource_ref.SendNotify();
            ((RequestArg_Resource)request_arg).resource_ref.DelRef();
        }
        m_nCoroutineCount--;
    }
Example #23
0
 public static string GetPackageBackupBlobName(PackageRef package)
 {
     return(GetPackageBackupBlobName(package.Id, package.Version, package.Hash));
 }
Example #24
0
        public WWWPakcageLoader(AssetBundleLoaderBase.PackageRef packageRef, string strUrl)
        {
            if (m_iRandVer == -1)
            {
                m_iRandVer = UnityEngine.Random.Range(1, 100000);
            }

            if (packageRef == null || strUrl == "")
                return;

            m_iPackageRef = packageRef;
            //使用缓存加载,会节省加载过程中的内存,但是会增大sd卡容量
            //m_iWWW = WWW.LoadFromCacheOrDownload(strUrl, 0);
            m_iWWW = new WWW(strUrl);
        }
Example #25
0
    private void ReadPackageInfo(PackageRef pack, byte[] data)
    {
        pack.dep_package_name = new string[] { };

        MemoryStream stream = new MemoryStream(data);
        StreamReader reader = new StreamReader(stream);

        do
        {
            string dep_package_name = reader.ReadLine();
            if (dep_package_name == null || dep_package_name.Length == 0)
                break;

            System.Array.Resize<string>(ref pack.dep_package_name, pack.dep_package_name.Length + 1);
            pack.dep_package_name[pack.dep_package_name.Length - 1] = dep_package_name;
        } while (true);

        reader.Close();
        stream.Close();
    }
Example #26
0
        public void DeleteItem()
        {
            if (treeTest.SelectedNode.Name == "Connection List" ||
                treeTest.SelectedNode.Name == "Package List" ||
                treeTest.SelectedNode.Name == "Dataset List" ||
                treeTest.SelectedNode.Name == "Test Suite Setup" ||
                treeTest.SelectedNode.Name == "Setup" ||
                treeTest.SelectedNode.Name == "Test" ||
                treeTest.SelectedNode.Name == "Teardown" ||
                treeTest.SelectedNode.Name == "Test Suite Teardown")
            {
                return;
            }

            CommandSet commandSet = treeTest.SelectedNode.Parent == null ? null : treeTest.SelectedNode.Parent.Tag as CommandSet;

            if (commandSet != null)
            {
                commandSet.Commands.Remove((CommandBase)treeTest.SelectedNode.Tag);
                treeTest.SelectedNode.Remove();
                return;
            }

            ConnectionRef connectionRef = treeTest.SelectedNode.Tag as ConnectionRef;

            if (connectionRef != null)
            {
                ConnectionRef cref = connectionRef;
                _testSuite.ConnectionList.Remove(cref.ReferenceName);
                treeTest.SelectedNode.Remove();
                return;
            }

            PackageRef packageRef = treeTest.SelectedNode.Tag as PackageRef;

            if (packageRef != null)
            {
                _testSuite.PackageList.Remove(packageRef.Name);
                treeTest.SelectedNode.Remove();
                return;
            }

            Dataset dataset = treeTest.SelectedNode.Tag as Dataset;

            if (dataset != null)
            {
                _testSuite.Datasets.Remove(dataset.Name);
                treeTest.SelectedNode.Remove();
                return;
            }

            Test unitTest = treeTest.SelectedNode.Tag as Test;

            if (unitTest != null)
            {
                _testSuite.Tests.Remove(unitTest.Name);
                treeTest.SelectedNode.Remove();
                return;
            }

            SsisAssert ssisAssert = treeTest.SelectedNode.Tag as SsisAssert;

            if (ssisAssert != null)
            {
                if (treeTest.SelectedNode.Parent == null)
                {
                    return;
                }

                Test cs = (Test)treeTest.SelectedNode.Parent.Tag;
                cs.Asserts.Remove(ssisAssert.Name);
                treeTest.SelectedNode.Remove();
                return;
            }

            if (treeTest.SelectedNode.Parent == null || !(treeTest.SelectedNode.Parent.Tag is SsisAssert))
            {
                return;
            }

            SsisAssert assert = (SsisAssert)treeTest.SelectedNode.Parent.Tag;

            assert.Command = null;
            treeTest.SelectedNode.Remove();
        }
Example #27
0
 void AddPackageRef(PackageRef packRef)
 {
     _ltPackageRef.Add(packRef);
 }
        public void SQL_MERGE_Users_Empty_table()
        {
            // a new test suite
            SsisTestSuite ts = new SsisTestSuite();

            // the package to test; three times .., because test dll is in .\bin\Development
            PackageRef p = new PackageRef(
                "15_Users_Dataset",
                @"..\..\..\Assets\ispac\ssisUnitLearning.ispac",
                "15_Users_Dataset.dtsx",
                PackageStorageType.FileSystem
                );

            // the connection for the datasets
            ConnectionRef c = new ConnectionRef(
                "ssisUnitLearningDB",
                @"Provider=SQLNCLI11.1;Data Source=.\SQL2017;Integrated Security=SSPI;Initial Catalog=ssisUnitLearningDB;Auto Translate=False",
                ConnectionRef.ConnectionTypeEnum.ConnectionString
                );

            // let the test suite know about the ConnectionRef and the PackageRef
            ts.ConnectionList.Add(c.ReferenceName, c);
            ts.PackageList.Add(p.Name, p);

            // expected and actual datasets
            Dataset expected = new Dataset(ts, "Empty table test: expected dataset", c, false, @"SELECT *
FROM(
    VALUES
        (CAST('Name 1' AS VARCHAR(50)), CAST('Login 1' AS CHAR(12)), CAST(1 AS BIT), CAST(1 AS INT), CAST(2 AS TINYINT), CAST(0 AS BIT)),
        (CAST('Name 2' AS VARCHAR(50)), CAST('Login 2' AS CHAR(12)), CAST(1 AS BIT), CAST(2 AS INT), CAST(2 AS TINYINT), CAST(0 AS BIT)),
        (CAST('Name 3' AS VARCHAR(50)), CAST('Login 3' AS CHAR(12)), CAST(0 AS BIT), CAST(3 AS INT), CAST(2 AS TINYINT), CAST(0 AS BIT))
)x(Name, Login, IsActive, Id, SourceSystemId, IsDeleted)
ORDER BY Id; ");

            Dataset actual = new Dataset(ts, "Empty table test: actual dataset", c, false, @"SELECT
    Name,
    Login,
    IsActive,
    SourceId,
    SourceSystemId,
    IsDeleted
FROM dbo.Users
 ORDER BY SourceId;");

            // add the datasets to the test suite
            ts.Datasets.Add(expected.Name, expected);
            ts.Datasets.Add(actual.Name, actual);

            // the test
            Test t = new Test(ts, "SQL MERGE Users: Empty table", "15_Users_Dataset", null, "{FB549B65-6F0D-4794-BA8E-3FF975A6AE0B}");

            ts.Tests.Add(t.Name, t);

            // test setup
            SqlCommand s1 = new SqlCommand(ts, "ssisUnitLearningDB", false, @"WITH stgUsers AS (
SELECT *
FROM (
    VALUES
        ('Name 1', 'Login 1', 1, 1, 2, -1),
        ('Name 2', 'Login 2', 1, 2, 2, -1),
        ('Name 3', 'Login 3', 0, 3, 2, -1)
)x (Name, Login, IsActive, Id, SourceSystemId, InsertedAuditId)
)
INSERT INTO stg.Users (
    Name, Login, IsActive, Id, SourceSystemId, InsertedAuditId
)
SELECT
    Name, Login, IsActive, Id, SourceSystemId, InsertedAuditId
FROM stgUsers
;");

            // add the setup to the test
            t.TestSetup.Commands.Add(s1);

            // test asserts and asserts' commands
            SsisAssert a1 = new SsisAssert(ts, t, "Assert: Added 3 records", 3, false);

            a1.Command = new SqlCommand(ts, "ssisUnitLearningDB", true, "SELECT COUNT(*) FROM dbo.Users;");

            SsisAssert a2 = new SsisAssert(ts, t, "Assert: dbo.Users has expected records", true, false);

            a2.Command = new DataCompareCommand(ts, "", expected, actual);

            // add the asserts to the test
            t.Asserts.Add(a1.Name, a1);
            t.Asserts.Add(a2.Name, a2);

            // test teardown
            SqlCommand t1 = new SqlCommand(ts, "ssisUnitLearningDb", false, "TRUNCATE TABLE stg.Users;");
            SqlCommand t2 = new SqlCommand(ts, "ssisUnitLearningDb", false, "TRUNCATE TABLE dbo.Users;");

            // add the teardown commands to the test
            // add the setup to the test
            t.TestTeardown.Commands.Add(t1);
            t.TestTeardown.Commands.Add(t2);

            // execute the test suite
            ts.Execute();

            // verify if everything is OK; we expect 3 asserts to pass
            Assert.AreEqual(3, ts.Statistics.GetStatistic(StatisticEnum.AssertPassedCount));

            // show me the XML version of the test - only in debug mode (internal method)
            //System.Console.Write(ts.PersistToXml);
        }
Example #29
0
        public void TestMethod()
        {
            var        testSuite    = new SsisTestSuite();
            var        projectPath  = config.ProjectPath;
            var        template     = "Product.dtsx";
            var        templatePath = config.TemplatePath;
            PackageRef p            = new PackageRef("ProductPackage", projectPath, template, SsisUnit.Enums.PackageStorageType.FileSystem);

            var conn = new System.Data.SqlClient.SqlConnectionStringBuilder(config.ConnectionString);

            var DatabaseConnectionString = $"{ conn.ConnectionString};Provider=SQLNCLI11.1;Auto Translate=False;Integrated Security =SSPI;";

            ConnectionRef con1 = new ConnectionRef("Destination",
                                                   DatabaseConnectionString,
                                                   ConnectionRef.ConnectionTypeEnum.ConnectionString
                                                   );

            var originalProductListConnection = new PropertyCommand(testSuite)
            {
                Name         = "OriginalProductList",
                PropertyPath = @"\Package.Connections[OriginalProductList].Properties[ConnectionString]",
                Operation    = PropertyCommand.PropertyOperation.Set,
                Value        = config.OriginalFilePath
            };

            //var stagedProductListConnection = new PropertyCommand(testSuite)
            //{
            //    Name="StagedProductList",
            //    PropertyPath = @"\Package.Connections[StagedProductList].Properties[ConnectionString]",
            //    Operation =PropertyCommand.PropertyOperation.Set,
            //    Value= @"C:\Users\nishant-mishra\source\repos\SSIS_UnitTesting\temp\ProductList.txt"
            //};

            testSuite.SetupCommands.Commands.Add(originalProductListConnection);
            //testSuite.SetupCommands.Commands.Add(stagedProductListConnection);
            testSuite.ConnectionList.Add(con1.ReferenceName, con1);
            testSuite.PackageList.Add(p.Name, p);

            //VariableCommand var1 = new VariableCommand(testSuite)
            //{
            //    Name = "fileExists",
            //    Operation = VariableCommand.VariableOperation.Set,
            //    Value = "false"
            //};

            //testSuite.SetupCommands.Commands.Add(var1);

            Test test1 = new Test(testSuite, "Verify No of RecordsinTable", templatePath + template, null, "{74BF5B2C-1017-4015-8B4A-36EEEFD44C06}");

            testSuite.Tests.Add(test1.Name, test1);

            //SqlCommand command1 = new SqlCommand(testSuite, "Destination", false, "select count(1) from dbo.Product");

            //test1.TestSetup.Commands.Add(command1);

            var assert1 = new SsisAssert(testSuite, test1, "Assert: Product has records", 6, false)
            {
                Command = new SqlCommand(testSuite, "Destination", true, "select count(1) from dbo.Product;")
            };


            test1.Asserts.Add(assert1.Name, assert1);
            testSuite.Execute();

            Assert.AreEqual(2, testSuite.Statistics.GetStatistic(SsisUnitBase.Enums.StatisticEnum.AssertPassedCount));
        }
Example #30
0
        public static Package LoadPackage(SsisTestSuite testSuite, string packageName, SecureString packagePassword, string projectPath, out object loadedProject)
        {
            var        ssisApp    = new Application();
            Package    package    = null;
            PackageRef packageRef = null;

            loadedProject = null;

            bool isPackagePathFilePath = false;

            if (string.IsNullOrEmpty(projectPath) && packageName.Contains(".dtsx"))
            {
                // Assume that it is a file path.
                var fileInfo = new FileInfo(Environment.ExpandEnvironmentVariables(packageName));

                if (fileInfo.Exists)
                {
                    isPackagePathFilePath = true;

                    if (packagePassword != null)
                    {
                        ssisApp.PackagePassword = ConvertToUnsecureString(packagePassword);
                    }

                    try
                    {
                        package = ssisApp.LoadPackage(fileInfo.FullName, null);
                    }
                    catch (DtsRuntimeException)
                    {
                        isPackagePathFilePath = false;
                    }
                }
            }

            if (!isPackagePathFilePath)
            {
                if (testSuite.PackageList.ContainsKey(packageName))
                {
                    packageRef = testSuite.PackageList[packageName];
                }
                else
                {
                    foreach (PackageRef packageReference in testSuite.PackageList.Values)
                    {
                        if ((packageReference.Name != null &&
                             string.Compare(
                                 packageReference.Name,
                                 packageName,
                                 StringComparison.OrdinalIgnoreCase) == 0) ||
                            (packageReference.PackagePath != null &&
                             string.Compare(
                                 packageReference.PackagePath,
                                 packageName,
                                 StringComparison.OrdinalIgnoreCase) == 0))
                        {
                            packageRef = packageReference;

                            break;
                        }
                    }
                }

                if (packageRef == null)
                {
                    throw new KeyNotFoundException(string.Format(CultureInfo.CurrentCulture, "{0} was not found in the test suite package references.", packageName));
                }

                package = packageRef.LoadPackage();

#if SQL2012 || SQL2014 || SQL2017
                loadedProject = packageRef.Project;
#endif
            }

            return(package);
        }