Esempio n. 1
0
        /// <summary>
        /// Downloads and updates a DLL.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <param name="url">The URL of the new DLL.</param>
        /// <param name="filename">The file name of the DLL.</param>
        private bool DownloadAndUpdateDll(IProviderV40 provider, string url, string filename)
        {
            try {
                // They must always be null except in testing where they are mocked
                HttpWebRequest  request  = (HttpWebRequest)HttpWebRequest.Create(url);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    Log.LogEntry("Update failed for provider " + provider.GetType().FullName + ": Status Code=" + response.StatusCode.ToString(), EntryType.Error, Log.SystemUsername, null);
                    response.Close();
                    return(false);
                }

                BinaryReader reader  = new BinaryReader(response.GetResponseStream());
                byte[]       content = reader.ReadBytes((int)response.ContentLength);
                reader.Close();

                bool done = globalSettingsProvider.StorePluginAssembly(filename, content);
                if (done)
                {
                    Log.LogEntry("Provider " + provider.GetType().FullName + " updated", EntryType.General, Log.SystemUsername, null);
                }
                else
                {
                    Log.LogEntry("Update failed for provider " + provider.GetType().FullName + ": could not store assembly", EntryType.Error, Log.SystemUsername, null);
                }

                return(done);
            }
            catch (Exception ex) {
                Log.LogEntry("Update failed for provider " + provider.GetType().FullName + ": " + ex.ToString(), EntryType.Error, Log.SystemUsername, null);
                return(false);
            }
        }
Esempio n. 2
0
        public void StorePluginAssembly_EmptyAssembly()
        {
            IGlobalSettingsStorageProviderV40 prov = GetProvider();

            //Collectors.SettingsProvider = prov;

            prov.StorePluginAssembly("Test.dll", new byte[0]);
        }
Esempio n. 3
0
        public void StorePluginAssembly_InvalidFilename(string fn)
        {
            IGlobalSettingsStorageProviderV40 prov = GetProvider();

            //Collectors.SettingsProvider = prov;

            prov.StorePluginAssembly(fn, new byte[10]);
        }
Esempio n. 4
0
        public void StorePluginAssembly_RetrievePluginAssembly_ListPluginAssemblies()
        {
            IGlobalSettingsStorageProviderV40 prov = GetProvider();

            //Collectors.SettingsProvider = prov;

            byte[] stuff = new byte[50];
            for (int i = 0; i < stuff.Length; i++)
            {
                stuff[i] = (byte)i;
            }

            Assert.AreEqual(0, prov.ListPluginAssemblies().Length, "Wrong length");

            Assert.IsTrue(prov.StorePluginAssembly("Plugin.dll", stuff), "StorePluginAssembly should return true");

            string[] asms = prov.ListPluginAssemblies();
            Assert.AreEqual(1, asms.Length, "Wrong length");
            Assert.AreEqual("Plugin.dll", asms[0], "Wrong assembly name");

            byte[] output = prov.RetrievePluginAssembly("Plugin.dll");
            Assert.AreEqual(stuff.Length, output.Length, "Wrong content length");
            for (int i = 0; i < stuff.Length; i++)
            {
                Assert.AreEqual(stuff[i], output[i], "Wrong content");
            }

            stuff = new byte[30];
            for (int i = stuff.Length - 1; i >= 0; i--)
            {
                stuff[i] = (byte)i;
            }

            Assert.IsTrue(prov.StorePluginAssembly("Plugin.dll", stuff), "StorePluginAssembly should return true");

            output = prov.RetrievePluginAssembly("Plugin.dll");
            Assert.AreEqual(stuff.Length, output.Length, "Wrong content length");
            for (int i = 0; i < stuff.Length; i++)
            {
                Assert.AreEqual(stuff[i], output[i], "Wrong content");
            }
        }
Esempio n. 5
0
        public void DeletePluginAssembly()
        {
            IGlobalSettingsStorageProviderV40 prov = GetProvider();

            //Collectors.SettingsProvider = prov;

            Assert.IsFalse(prov.DeletePluginAssembly("Assembly.dll"), "DeletePluginAssembly should return false");

            byte[] stuff = new byte[50];
            for (int i = 0; i < stuff.Length; i++)
            {
                stuff[i] = (byte)i;
            }

            prov.StorePluginAssembly("Plugin.dll", stuff);
            prov.StorePluginAssembly("Assembly.dll", stuff);

            Assert.IsTrue(prov.DeletePluginAssembly("Assembly.dll"), "DeletePluginAssembly should return true");

            string[] asms = prov.ListPluginAssemblies();

            Assert.AreEqual(1, asms.Length, "Wrong length");
            Assert.AreEqual("Plugin.dll", asms[0], "Wrong assembly");
        }