Пример #1
0
        static void Main(string[] args)
        {
            var addon    = new Addon();
            var manifest = new AddonManifest
            {
                Author     = "Abraham Sultan",
                Vendor     = "Apprenda Inc.",
                Version    = "1.0.0.0",
                IsEnabled  = true,
                Name       = "AWS RDS",
                Properties = new List <AddonProperty>()
                {
                    new AddonProperty()
                    {
                        Key = "requireDevCredentials", Value = "true"
                    }
                }
            };

            var request = new AddonTestRequest {
                Manifest = manifest, DeveloperOptions = ""
            };

            addon.Test(request);
        }
        public override OperationResult Test(AddonTestRequest _request)
        {
            var manifest      = _request.Manifest;
            var devParameters = _request.DeveloperParameters;
            var devOptions    = BMDeveloperOptions.Parse(devParameters, manifest);
            var testResult    = new OperationResult {
                EndUserMessage = string.Empty, IsSuccess = false
            };

            end_point  = devOptions.api_url;
            bm_version = devOptions.api_version;

            try
            {
                var token           = authenticate(devOptions.bluemixuser, devOptions.bluemixpass);
                var servicePlansURL = getServicePlansURL(token, devOptions.servicename);
            }
            catch (Exception ex)
            {
                var errorMessage = string.Format("BluemixAddon Testing Error: {0}\n{1}", ex, ex.StackTrace);
                log.Error(errorMessage);
                testResult.EndUserMessage = errorMessage;
                return(testResult);
            }

            testResult.EndUserMessage = "BluemixAddon Add-On was tested successfully";
            testResult.IsSuccess      = true;
            return(testResult);
        }
Пример #3
0
        public static void TestManifestMissingDefaultCreds()
        {
            var addon    = new Addon();
            var manifest = GetAWSAddonManifest();
            var result   = new OperationResult();
            var request  = new AddonTestRequest {
                Manifest = manifest, DeveloperOptions = ""
            };

            manifest.ProvisioningUsername = null;
            manifest.ProvisioningPassword = "******";
            result = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("Missing credentials"), result.EndUserMessage);

            manifest.ProvisioningUsername = "******";
            manifest.ProvisioningPassword = null;
            result = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("Missing credentials"), result.EndUserMessage);

            manifest.ProvisioningUsername = null;
            manifest.ProvisioningPassword = null;
            result = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("Missing credentials"), result.EndUserMessage);
        }
Пример #4
0
        public override OperationResult Test(AddonTestRequest request)
        {
            return(Task.Run(async() =>
            {
                try
                {
                    var logic = new Logic(request.Manifest);
                    var volumeSize = request.DeveloperParameters.First(p => p.Key == "VolumeSize").Value;
                    var name = Guid.NewGuid().ToString();

                    // Provision
                    await logic.ProvisionVolume(name, volumeSize);

                    // Deprovision
                    await logic.DeprovisionVolume(name);

                    return new OperationResult {
                        IsSuccess = true
                    };
                }
                catch (Exception ex)
                {
                    return new OperationResult {
                        EndUserMessage = $"Error testing the add-on: {ex}"
                    };
                }
            }).GetAwaiter().GetResult());
        }
Пример #5
0
        public static void TestManifestMissingProperties()
        {
            var addon    = new Addon();
            var manifest = GetAWSAddonManifest();

            manifest.Properties.Clear();
            var request = new AddonTestRequest {
                Manifest = manifest, DeveloperOptions = ""
            };

            var result = addon.Test(request);

            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("Missing required manifest properties"), result.EndUserMessage);

            manifest = GetAWSAddonManifest();
            manifest.ProvisioningUsername = null;
            manifest.ProvisioningPassword = "******";
            request.Manifest = manifest;
            result           = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("needs to be provided as part of the manifest"), result.EndUserMessage);

            manifest = GetAWSAddonManifest();
            manifest.ProvisioningUsername = "******";
            manifest.ProvisioningPassword = null;
            request.Manifest = manifest;
            result           = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("needs to be provided as part of the manifest"), result.EndUserMessage);
        }
Пример #6
0
        public static void TestInvalidDevOptions()
        {
            var addon    = new Addon();
            var manifest = GetAWSAddonManifest();
            var request  = new AddonTestRequest {
                Manifest = manifest
            };

            request.DeveloperOptions = "=&=";
            var result = addon.Test(request);

            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("Unable to parse developer options"), result.EndUserMessage);

            request.DeveloperOptions = "random=key&";
            result = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("was not expected and is not understood"), result.EndUserMessage);

            request.DeveloperOptions = "allocatedstorage=five";
            result = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("can only have an integer value"), result.EndUserMessage);

            request.DeveloperOptions = "autominorversionupgrade=1";
            result = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("only have a value of true|false"), result.EndUserMessage);
        }
Пример #7
0
        public override OperationResult Test(AddonTestRequest _request)
        {
            // NOTE: Any exceptions thrown out of any add-on method will result in a failure of the operation.
            //       The full-depth exception from inside the add-on will get logged in the SOC, but if you
            //       wish to display a more user-friendly message in the report card format then you need to
            //       handle exceptions manually inside the add-on implementation.

            var result = new OperationResult()
            {
                IsSuccess = false
            };
            string port;

            try
            {
                port = _request.Manifest.Properties.Find(_x => _x.Key.Equals("port")).Value;
            }
            catch (ArgumentNullException)
            {
                port = "27017";
            }
            try
            {
                var parameters       = DeveloperParameters.Parse(_request.DeveloperParameters, _request.Manifest.Properties);
                var connectionString = GetConnectionString(_request.Manifest.ProvisioningLocation,
                                                           port,
                                                           _request.Manifest.ProvisioningUsername,
                                                           _request.Manifest.ProvisioningPassword);

                var client = new MongoClient(connectionString);

                // Create a DB and add a collection to make sure the MongoDB instance is configured correctly.
                var database = client.GetDatabase("test");
                //create user
                var document = CreateUserAdd(parameters.Username, parameters.Password, "test");
                database.RunCommand <BsonDocument>(document);
                //create collection
                var collection = database.GetCollection <TestObject>("testObjects");
                collection.InsertOne(new TestObject {
                    Value = "test"
                });
                //delete user
                DropUser(parameters.Username);
                //delete database
                client.DropDatabase("test");
                result.IsSuccess = true;
            }
            catch (MongoException mongoException)
            {
                Logger.ErrorFormat("Error occurred during testing: {0} \n {1}", mongoException.Message, mongoException.StackTrace);
                result.EndUserMessage = mongoException.Message;
            }
            catch (Exception mongoException)
            {
                Logger.ErrorFormat("Error occurred during testing: {0} \n {1}", mongoException.Message, mongoException.StackTrace);
                result.EndUserMessage = mongoException.Message;
            }

            return(result);
        }
        // Testing Instance
        // Input: AddonTestRequest request
        // Output: OperationResult
        public override OperationResult Test(AddonTestRequest request)
        {
            var testResult = new OperationResult {IsSuccess = false};
            var apr = new AddonProvisionRequest
            {
                DeveloperParameters = request.DeveloperParameters,
                Manifest = request.Manifest
            };

            var dpr = new AddonDeprovisionRequest
            {
                DeveloperParameters = request.DeveloperParameters,
                Manifest = request.Manifest
            };
            var provisionTest = Provision(apr);
            if (!provisionTest.IsSuccess)
            {
                return provisionTest;
            }
            var testProgress = provisionTest.EndUserMessage;
            var deprovisionTest = Deprovision(dpr);
            if (!deprovisionTest.IsSuccess)
            {
                return deprovisionTest;
            }
            testProgress += deprovisionTest.EndUserMessage;
            testResult.IsSuccess = true;
            testResult.EndUserMessage = testProgress;
            return testResult;
        }
Пример #9
0
        // Testing Instance
        // Input: AddonTestRequest request
        // Output: OperationResult
        public override OperationResult Test(AddonTestRequest request)
        {
            var testResult = new OperationResult {
                IsSuccess = false
            };
            var apr = new AddonProvisionRequest
            {
                DeveloperParameters = request.DeveloperParameters,
                Manifest            = request.Manifest
            };

            var dpr = new AddonDeprovisionRequest
            {
                DeveloperParameters = request.DeveloperParameters,
                Manifest            = request.Manifest
            };
            var provisionTest = Provision(apr);

            if (!provisionTest.IsSuccess)
            {
                return(provisionTest);
            }
            var testProgress    = provisionTest.EndUserMessage;
            var deprovisionTest = Deprovision(dpr);

            if (!deprovisionTest.IsSuccess)
            {
                return(deprovisionTest);
            }
            testProgress             += deprovisionTest.EndUserMessage;
            testResult.IsSuccess      = true;
            testResult.EndUserMessage = testProgress;
            return(testResult);
        }
Пример #10
0
        public override OperationResult Test(AddonTestRequest request)
        {
            AddonManifest manifest         = request.Manifest;
            string        developerOptions = request.DeveloperOptions;
            var           testResult       = new OperationResult {
                IsSuccess = false
            };
            var testProgress = "";

            //string jobid = null;

            if (manifest.Properties != null && manifest.Properties.Any())
            {
                EMRDeveloperOptions devOptions;

                testProgress += "Evaluating required manifest properties...\n";
                if (!ValidateManifest(manifest, out testResult))
                {
                    return(testResult);
                }

                var parseOptionsResult = ParseDevOptions(developerOptions, out devOptions);

                if (!parseOptionsResult.IsSuccess)
                {
                    return(parseOptionsResult);
                }
                testProgress += parseOptionsResult.EndUserMessage;

                try
                {
                    testProgress += "Establishing connection to AWS...\n";
                    IAmazonElasticMapReduce client;

                    var establishClientResult = EstablishClient(manifest, devOptions, out client);

                    if (!establishClientResult.IsSuccess)
                    {
                        return(establishClientResult);
                    }
                    testProgress += establishClientResult.EndUserMessage;

                    testProgress             += "Successfully passed all testing criteria!";
                    testResult.IsSuccess      = true;
                    testResult.EndUserMessage = testProgress;
                }
                catch (Exception e)
                {
                    testResult.EndUserMessage = e.Message;
                }
            }
            else
            {
                testResult.EndUserMessage = "Missing required manifest properties (requireDevCredentials)";
            }

            return(testResult);
        }
Пример #11
0
 public override OperationResult Test(AddonTestRequest request)
 {
     /*The test method allows you to test whether the Add-On was developed and configured properly and that any dependent systems are
      * operating normally. During this method, you will want to go through a similar workflow to Provision to ensure proper functioning
      * of the Add-On.*/
     return(new OperationResult {
         EndUserMessage = "The Add-On was tested successfully", IsSuccess = true
     });
 }
Пример #12
0
        public void AddonTest()
        {
            // Arrange
            var request = new AddonTestRequest
            {
                DeveloperParameters = new[]
                {
                    new AddonParameter
                    {
                        Key   = "VolumeSize",
                        Value = "1Gi"
                    }
                },
                Manifest = new AddonManifest
                {
                    ProvisioningLocation = "https://ash:6443",
                    Properties           = new List <AddonProperty>
                    {
                        new AddonProperty
                        {
                            Key   = AddonManifest.InstanceAliasPropertyKey,
                            Value = "test"
                        },
                        new AddonProperty
                        {
                            Key   = "StorageClass",
                            Value = "glusterfs"
                        },
                        new AddonProperty
                        {
                            Key   = "Namespace",
                            Value = "acp"
                        },
                        new AddonProperty
                        {
                            Key   = "Certificate",
                            Value = "client.pfx"
                        },
                        new AddonProperty
                        {
                            Key   = "Password",
                            Value = "password"
                        }
                    }
                }
            };
            var addon = new Addon();

            // Act
            var result = addon.Test(request);

            // Assert
            Assert.IsTrue(result.IsSuccess, result.EndUserMessage);
        }
Пример #13
0
        public RabbitMQConfig(AddonTestRequest request)
        {
            Hostname = request.Manifest.Properties.Single(p => p.Key == RabbitEndpointKey).Value;
            var portString = request.Manifest.Properties.Single(p => p.Key == RabbitPortKey).Value;

            Port = int.Parse(portString);
            var adminPortString = request.Manifest.Properties.Single(p => p.Key == RabbitAdminPortKey).Value;

            AdminPort     = int.Parse(adminPortString);
            AdminUser     = request.Manifest.Properties.Single(p => p.Key == RabbitAdminUserKey).Value;
            AdminPassword = request.Manifest.Properties.Single(p => p.Key == RabbitAdminPasswordKey).Value;
        }
Пример #14
0
 public void SetupManifest()
 {
     ProvisionRequest = new AddonProvisionRequest {
         Manifest = SetupPropertiesAndParameters()
     };
     DeprovisionRequest = new AddonDeprovisionRequest {
         Manifest = SetupPropertiesAndParameters()
     };
     TestRequest = new AddonTestRequest {
         Manifest = SetupPropertiesAndParameters()
     };
 }
Пример #15
0
        public void SocTest()
        {
            this.TestRequest = new AddonTestRequest()
            {
                Manifest            = SetupPropertiesAndParameters(),
                DeveloperParameters = SetUpParameters()
            };
            var output = new MongoDbAddOn().Test(this.TestRequest);

            Assert.That(output, Is.TypeOf <OperationResult>());
            Assert.That(output.IsSuccess, Is.EqualTo(true));
        }
Пример #16
0
        public override OperationResult Test(AddonTestRequest request)
        {
            var testProgress = "";
            var testResult   = new OperationResult {
                IsSuccess = false
            };

            var manifest = request.Manifest;

            var developerParameters = request.DeveloperParameters;
            var developerOptions    = GoogleCloudDeveloperOptions.Parse(developerParameters);

            testProgress += "Attempting to add an instance...";
            try
            {
                //add instance
                var op = new InstanceOperations(manifest, developerOptions);
                op.AddInstance();
                testProgress += "Successfully added instance.\n";
                //wait for instance to finishing adding
                Thread.Sleep(120000);

                try
                {
                    //remove instance
                    testProgress += "Attempting to remove an instance...";
                    op.RemoveInstance();
                    testProgress        += "Successfully removed instance.\n";
                    testResult.IsSuccess = true;
                }
                catch (AggregateException e)
                {
                    foreach (var err in e.InnerExceptions)
                    {
                        Log.Error("Error occurred during test of Google Cloud Addon", err);
                        testProgress += "EXCEPTION: " + err + "\n";
                    }
                    testProgress += "Failed to remove instance \n";
                }
            }
            catch (AggregateException e)
            {
                foreach (var err in e.InnerExceptions)
                {
                    Log.Error("Error occurred during test of Google Cloud Addon", err);
                    testProgress += "EXCEPTION: " + err + "\n";
                }
                testProgress += "Failed to add instance \n";
            }
            testResult.EndUserMessage = testProgress;
            return(testResult);
        }
Пример #17
0
 public void SetupManifest()
 {
     this.ProvisionRequest = new AddonProvisionRequest
     {
         Manifest            = SetupPropertiesAndParameters(),
         DeveloperParameters = SetUpParameters()
     };
     this.DeprovisionRequest = new AddonDeprovisionRequest {
         Manifest = SetupPropertiesAndParameters()
     };
     this.TestRequest = new AddonTestRequest {
         Manifest = SetupPropertiesAndParameters()
     };
 }
Пример #18
0
        public static void TestSuccessfullyConnectionToAWS()
        {
            var addon    = new Addon();
            var manifest = GetAWSAddonManifest();

            manifest.Properties.First(p => p.Key == "requireDevCredentials").Value = "false";
            manifest.ProvisioningUsername = awsAccessKey;
            manifest.ProvisioningPassword = awsSecretKey;
            var request = new AddonTestRequest {
                Manifest = manifest, DeveloperOptions = ""
            };

            var result = addon.Test(request);

            Assert.IsTrue(result.IsSuccess, result.EndUserMessage);
        }
Пример #19
0
        public override OperationResult Test(AddonTestRequest request)
        {
            var rabbitConfig = new RabbitMQConfig(request);

            var factory = new ConnectionFactory()
            {
                HostName = rabbitConfig.Hostname, UserName = rabbitConfig.AdminUser, Password = rabbitConfig.AdminPassword, Port = rabbitConfig.Port, RequestedConnectionTimeout = 20000
            };

            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "AddOnTestQueue",
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    string sendMessage = "Hello from Test method!";
                    var    sendBody    = Encoding.UTF8.GetBytes(sendMessage);

                    channel.BasicPublish(exchange: "",
                                         routingKey: "AddOnTestQueue",
                                         basicProperties: null,
                                         body: sendBody);
                    Console.WriteLine(" [x] Sent {0}", sendMessage);

                    Thread.Sleep(100);

                    var result   = channel.BasicGet(queue: "AddOnTestQueue", noAck: false);
                    var recvBody = result.Body;
                    channel.BasicAck(result.DeliveryTag, false);
                    var recvMessage = Encoding.UTF8.GetString(recvBody);
                    Console.WriteLine(" [x] Received {0}", recvMessage);

                    Assert.AreEqual(sendBody, recvBody);
                    Assert.AreEqual(sendMessage, recvMessage);


                    return(new OperationResult()
                    {
                        IsSuccess = true, EndUserMessage = ""
                    });
                }
            }
        }
Пример #20
0
        public static void TestManifestMissingCredProperty()
        {
            var addon    = new Addon();
            var manifest = GetAWSAddonManifest();

            manifest.Properties.Clear();
            manifest.Properties.Add(new AddonProperty {
                Key = "randomProperty", Value = "randomValue"
            });
            var request = new AddonTestRequest {
                Manifest = manifest, DeveloperOptions = ""
            };
            var result = addon.Test(request);

            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("Missing required property"), result.EndUserMessage);
        }
Пример #21
0
        public void TestTestMethod()
        {
            var testRequest = new AddonTestRequest();

            var properties = new List <AddonProperty>();

            properties.Add(new AddonProperty()
            {
                Key = "RabbitEndpoint", Value = "hqs-engineer15.apprendalabs.local"
            });
            properties.Add(new AddonProperty()
            {
                Key = "RabbitAdminPort", Value = "15672"
            });
            properties.Add(new AddonProperty()
            {
                Key = "RabbitPort", Value = "5672"
            });
            properties.Add(new AddonProperty()
            {
                Key = "RabbitAdminUser", Value = "guest"
            });
            properties.Add(new AddonProperty()
            {
                Key = "RabbitAdminPassword", Value = "guest"
            });
            properties.Add(new AddonProperty()
            {
                Key = "DeveloperAlias", Value = "unit"
            });
            properties.Add(new AddonProperty()
            {
                Key = "InstanceAlias", Value = "sampleId"
            });

            testRequest.Manifest            = ReadTestManifest("UnitTestAddOnManifest.xml");
            testRequest.Manifest.Properties = properties;

            var addon  = new RabbitMQAddOn.RabbitMQAddOn();
            var result = addon.Test(testRequest);

            Assert.IsNotNull(result);
        }
Пример #22
0
        public override OperationResult Test(AddonTestRequest request)
        {
            var manifest        = request.Manifest;
            var developerParams = request.DeveloperParameters;
            var testResult      = new OperationResult {
                IsSuccess = false
            };
            var testProgress       = "";
            var manifestProperties = manifest.Properties;

            if (manifestProperties != null)
            {
                var devOptions = DeveloperParameters.Parse(developerParams, manifest.GetProperties());
                var creds      = CertificateAuthenticationHelper.GetCredentials(devOptions.AzureManagementSubscriptionId,
                                                                                devOptions.AzureAuthenticationKey, devOptions.PFXPassword);
                try
                {
                    testProgress += "Establishing connection to Azure...\n";
                    // set up the credentials for azure

                    var client = new StorageManagementClient(creds);

                    //var listOfStorageAccounts = client.StorageAccounts.List();

                    testProgress             += "Successfully passed all testing criteria!";
                    testResult.IsSuccess      = true;
                    testResult.EndUserMessage = testProgress;
                }
                catch (Exception e)
                {
                    // adding a forced failure here.
                    testResult.IsSuccess      = false;
                    testResult.EndUserMessage = testProgress + "\nEXCEPTION: " + e.Message;
                }
            }
            else
            {
                testResult.IsSuccess      = false;
                testResult.EndUserMessage = "Missing required manifest properties (requireDevCredentials)";
            }

            return(testResult);
        }
Пример #23
0
        static void Main(string[] args)
        {
            var addon = new Addon();
            var manifest = new AddonManifest
                {
                  Author  = "Abraham Sultan",
                  Vendor = "Apprenda Inc.",
                  Version = "1.0.0.0",
                  IsEnabled = true,
                  Name = "AWS RDS",
                  Properties = new List<AddonProperty>()
                      {
                          new AddonProperty(){Key = "requireDevCredentials", Value = "true"}
                      }
                };

            var request = new AddonTestRequest { Manifest = manifest, DeveloperOptions = "" };
            addon.Test(request);
        }
 public override OperationResult Test(AddonTestRequest request)
 {
     try
     {
         GetListenerUrl(request.Manifest);
         return(new OperationResult()
         {
             EndUserMessage = "AddOn test was successful!",
             IsSuccess = true
         });
     }
     catch (Exception ex)
     {
         return(new OperationResult()
         {
             IsSuccess = false,
             EndUserMessage = $"AddOn test failed with message {ex.Message}.  StackTrace: {ex.StackTrace}"
         });
     }
 }
Пример #25
0
        public override OperationResult Test(AddonTestRequest request)
        {
            var result = new OperationResult();

            try
            {
                NewDatabase = GetDatabaseName(request.Manifest);
                NewUserId   = GetNewUsername(request.Manifest);
                NewPassword = GetPassword();

                log.InfoFormat("Creating and removing MsSql database: {0}", NewDatabase);

                using (var connection = GetConnection(request.Manifest.Properties))
                {
                    CreateDatabase(connection);

                    CreateUser(connection);

                    GrantPrivileges(connection);

                    DropUser(connection);

                    DropDatabase(connection);
                }

                result.IsSuccess      = true;
                result.EndUserMessage = "Successfully created and removed a MsSql database.";

                log.InfoFormat("Successfully created and removed MsSql database: {0}", NewDatabase);
            }
            catch (Exception ex)
            {
                result.IsSuccess      = false;
                result.EndUserMessage = ex.Message;

                log.ErrorFormat("Failed to create or remove MsSql database '{0}': {1}", NewDatabase, ex.Message);
                log.Error(ex.StackTrace);
            }

            return(result);
        }
Пример #26
0
        public override OperationResult Test(AddonTestRequest request)
        {
            var manifest       = request.Manifest;
            var inputDevParams = request.DeveloperParameters;
            var testResult     = new OperationResult {
                IsSuccess = false
            };
            var testProgress       = "";
            var manifestProperties = manifest.Properties;

            if (manifestProperties != null && manifestProperties.Any())
            {
                var devParams = DeveloperParameters.Parse(inputDevParams, manifestProperties);
                try
                {
                    testProgress += "Establishing connection to Azure...\n";
                    // set up the credentials for azure

                    var client = EstablishClient(devParams);

                    var listOfStorageAccounts = client.StorageAccounts.List();

                    testProgress += $"Number of Accounts: '{listOfStorageAccounts.Count()}'";

                    testProgress             += "Successfully passed all testing criteria!";
                    testResult.IsSuccess      = true;
                    testResult.EndUserMessage = testProgress;
                }
                catch (Exception e)
                {
                    testResult.EndUserMessage = e.Message;
                }
            }
            else
            {
                testResult.EndUserMessage = "Missing required manifest properties (requireDevCredentials)";
            }

            return(testResult);
        }
Пример #27
0
        public static void TestMissingDevCreds()
        {
            var addon    = new Addon();
            var manifest = GetAWSAddonManifest();
            var request  = new AddonTestRequest {
                Manifest = manifest, DeveloperOptions = ""
            };

            var result = addon.Test(request);

            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("requires that developer credentials are specified"), result.EndUserMessage);

            request.DeveloperOptions = "accessKey=abe";
            result = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("requires that developer credentials are specified"), result.EndUserMessage);

            request.DeveloperOptions = "secretKey=secret";
            result = addon.Test(request);
            Assert.IsFalse(result.IsSuccess);
            Assert.IsTrue(result.EndUserMessage.Contains("requires that developer credentials are specified"), result.EndUserMessage);
        }
        public override OperationResult Test(AddonTestRequest _request)
        {
            /*The test method allows you to test whether the Add-On was developed and configured properly and that any dependent systems are
             * operating normally. During this method, you will want to go through a similar workflow to Provision to ensure proper functioning
             * of the Add-On.*/
            var manifest      = _request.Manifest;
            var devParameters = _request.DeveloperParameters;
            var devOptions    = WCDeveloperOptions.Parse(devParameters, manifest);
            var testResult    = new OperationResult {
                EndUserMessage = string.Empty, IsSuccess = false
            };

            cloud_url = devOptions.cloudurl;
            appalias  = devOptions.alias;

            try
            {
                var token      = authenticate(devOptions.apprendausername, devOptions.apprendapassword, devOptions.apprendatenant);
                int statusCode = getApp(token, appalias);
                if (statusCode != 200)
                {
                    throw new Exception("Watson Conversation API has not successfully been deployed in Apprenda");
                }
            }
            catch (Exception ex)
            {
                var errorMessage = string.Format("WatsonConversationAddon Testing Error: {0}\n{1}", ex, ex.StackTrace);
                log.Error(errorMessage);
                testResult.EndUserMessage = errorMessage;
                return(testResult);
            }

            testResult.EndUserMessage = "WatsonConversationAddon Add-On was tested successfully";
            testResult.IsSuccess      = true;
            return(testResult);
        }
Пример #29
0
        // Testing Instance
        // Input: AddonTestRequest request
        // Output: OperationResult
        public override OperationResult Test(AddonTestRequest request)
        {
            var provisionRequest = new AddonProvisionRequest {
                Manifest = request.Manifest, DeveloperOptions = request.DeveloperOptions
            };
            var manifest         = request.Manifest;
            var developerOptions = request.DeveloperOptions;
            var testResult       = new OperationResult {
                IsSuccess = false
            };
            var testProgress = "";

            if (manifest.Properties != null && manifest.Properties.Any())
            {
                S3DeveloperOptions devOptions;

                testProgress += "Evaluating required manifest properties...\n";
                if (!ValidateManifest(manifest, out testResult))
                {
                    return(testResult);
                }

                var parseOptionsResult = ParseDevOptions(developerOptions, out devOptions);
                if (!parseOptionsResult.IsSuccess)
                {
                    return(parseOptionsResult);
                }
                testProgress += parseOptionsResult.EndUserMessage;

                try
                {
                    testProgress += "Establishing connection to AWS...\n";
                    AmazonS3Client client;
                    var            establishClientResult = EstablishClient(manifest, devOptions, out client);
                    if (!establishClientResult.IsSuccess)
                    {
                        return(establishClientResult);
                    }
                    testProgress += establishClientResult.EndUserMessage;

                    testProgress             += "Successfully connected. \n";
                    testResult.IsSuccess      = true;
                    testResult.EndUserMessage = testProgress;

                    // ok and let let's try provisioning

                    var result = Provision(provisionRequest);

                    testResult.EndUserMessage += result.IsSuccess + "\n";
                    testResult.EndUserMessage += result.ConnectionData + "\n";
                    testResult.EndUserMessage += result.EndUserMessage + "\n";

                    var depResult = Deprovision(new AddonDeprovisionRequest {
                        ConnectionData = result.ConnectionData, DeveloperOptions = provisionRequest.DeveloperOptions, Manifest = provisionRequest.Manifest
                    });
                    if (depResult == null)
                    {
                        throw new ArgumentNullException("request");
                    }

                    testResult.EndUserMessage += depResult.IsSuccess + "\n";
                    testResult.EndUserMessage += depResult.EndUserMessage;
                }
                catch (Exception e)
                {
                    testResult.EndUserMessage = e.Message + e.StackTrace;
                }
            }
            else
            {
                testResult.EndUserMessage = "Missing required manifest properties (requireDevCredentials)";
            }

            return(testResult);
        }
Пример #30
0
 public override OperationResult Test(AddonTestRequest request)
 {
     return new OperationResult()
     {
         EndUserMessage = "Testing complete, but still need to build out a few more things.",
         IsSuccess = true
     };
 }
Пример #31
0
        public override OperationResult Test(AddonTestRequest request)
        {
            var manifest = request.Manifest;
            var developerParams = request.DeveloperParameters;
            var testResult = new OperationResult { IsSuccess = false };
            var testProgress = "";
            var manifestProperties = manifest.Properties;

            if (manifestProperties != null)
            {
                var devOptions = DeveloperParameters.Parse(developerParams, manifest.GetProperties());
                var creds = CertificateAuthenticationHelper.GetCredentials(devOptions.AzureManagementSubscriptionId,
                    devOptions.AzureAuthenticationKey);
                try
                {
                    testProgress += "Establishing connection to Azure...\n";
                    // set up the credentials for azure

                    var client = new StorageManagementClient(creds);

                    var listOfStorageAccounts = client.StorageAccounts.List();

                    testProgress += "Successfully passed all testing criteria!";
                    testResult.IsSuccess = true;
                    testResult.EndUserMessage = testProgress;
                }
                catch (Exception e)
                {
                    // adding a forced failure here.
                    testResult.IsSuccess = false;
                    testResult.EndUserMessage = testProgress + "\nEXCEPTION: " + e.Message;
                }
            }
            else
            {
                testResult.IsSuccess = false;
                testResult.EndUserMessage = "Missing required manifest properties (requireDevCredentials)";
            }

            return testResult;
        }
Пример #32
0
 public override OperationResult Test(AddonTestRequest request)
 {
     throw new System.NotImplementedException();
 }
Пример #33
0
 public void SetupManifest()
 {
     ProvisionRequest = new AddonProvisionRequest {Manifest = SetupPropertiesAndParameters()};
     DeprovisionRequest = new AddonDeprovisionRequest {Manifest = SetupPropertiesAndParameters()};
     TestRequest = new AddonTestRequest {Manifest = SetupPropertiesAndParameters()};
 }
Пример #34
0
 // Testing Instance
 // Input: AddonTestRequest request
 // Output: OperationResult
 public abstract override OperationResult Test(AddonTestRequest request);
Пример #35
0
        // Testing Instance
        // Input: AddonTestRequest request
        // Output: OperationResult
        public override OperationResult Test(AddonTestRequest request)
        {
            AddonManifest manifest = request.Manifest;
            string developerOptions = request.DeveloperOptions;
            var testResult = new OperationResult { IsSuccess = false };
            var testProgress = "";

            if (manifest.Properties != null && manifest.Properties.Any())
            {
                DeveloperOptions devOptions;

                testProgress += "Evaluating required manifest properties...\n";
                if (!ValidateManifest(manifest, out testResult))
                {
                    return testResult;
                }

                var parseOptionsResult = ParseDevOptions(developerOptions, out devOptions);
                if (!parseOptionsResult.IsSuccess)
                {
                    return parseOptionsResult;
                }
                testProgress += parseOptionsResult.EndUserMessage;

                try
                {
                    testProgress += "Establishing connection to AWS...\n";
                    AmazonSimpleNotificationServiceClient client;
                    var establishClientResult = EstablishClient(manifest, devOptions, out client);
                    if (!establishClientResult.IsSuccess)
                    {
                        return establishClientResult;
                    }
                    testProgress += establishClientResult.EndUserMessage;

                    var platformApps = client.ListPlatformApplications();
                    testProgress += "Successfully passed all testing criteria!";
                    testResult.IsSuccess = true;
                    testResult.EndUserMessage = testProgress;
                }
                catch (Exception e)
                {
                    testResult.EndUserMessage = e.Message;
                }
            }
            else
            {
                testResult.EndUserMessage = "Missing required manifest properties (requireDevCredentials)";
            }

            return testResult;
        }
Пример #36
0
        public override OperationResult Test(AddonTestRequest request)
        {
            var manifest = request.Manifest;
            var inputDevParams = request.DeveloperParameters;
            var testResult = new OperationResult {IsSuccess = false};
            var testProgress = "";
            var manifestProperties = manifest.Properties;

            if (manifestProperties != null && manifestProperties.Any())
            {
                var devParams = DeveloperParameters.Parse(inputDevParams, manifestProperties);
                try
                {
                    testProgress += "Establishing connection to Azure...\n";
                    // set up the credentials for azure

                    var client = EstablishClient(devParams);

                    var listOfStorageAccounts = client.StorageAccounts.List();

                    testProgress += $"Number of Accounts: '{listOfStorageAccounts.Count()}'";

                    testProgress += "Successfully passed all testing criteria!";
                    testResult.IsSuccess = true;
                    testResult.EndUserMessage = testProgress;
                }
                catch (Exception e)
                {
                    testResult.EndUserMessage = e.Message;
                }
            }
            else
            {
                testResult.EndUserMessage = "Missing required manifest properties (requireDevCredentials)";
            }

            return testResult;
        }
        public override OperationResult Test(AddonTestRequest request)
        {
            if (request == null)
            {
                return(FaultResult("The Syslog addon received a Test call without a valid Request"));
            }

            var host      = request.Manifest.Properties.First(p => p.Key.Equals("Host")).Value;
            var portValue = request.Manifest.Properties.First(p => p.Key.Equals("Port")).Value;
            var protocol  = request.Manifest.Properties.First(p => p.Key.Equals("Protocol")).Value;
            var mapType   = request.Manifest.Properties.First(p => p.Key.Equals("MapType")).Value;
            var flavor    = request.Manifest.Properties.First(p => p.Key.Equals("Flavor")).Value;

            IPAddress asIp;

            if (!IPAddress.TryParse(host, out asIp))
            {
                var hostEntry = Dns.GetHostEntry(host);
                if (hostEntry.AddressList.Any())
                {
                    asIp = hostEntry.AddressList.First();
                }
                else
                {
                    return(FaultResult($"Could not resolve {host} as an IP address or hostname."));
                }
            }

            int port;

            if (!int.TryParse(portValue, out port))
            {
                return(FaultResult("Could not parse {portValue} as a portnumber."));
            }

            switch (protocol.ToUpperInvariant())
            {
            case "TCP":
                try
                {
                    TestTcpConnection(asIp, port);
                }
                catch
                {
                    return(FaultResult($"There was a failure connecting to tcp endpoint {host}:{port}."));
                }

                break;

            case "UDP":

                try
                {
                    TestUdpConnection(asIp, port);
                }
                catch
                {
                    return(FaultResult($"There was a failure connecting to udp endpoint {host}:{port}."));
                }

                break;

            case "ENCRYPTEDTCP":
                // TODO: implement encrypted TCP test connection.
                break;

            default:
                return(FaultResult($"Unsupported protocol {protocol}"));
            }

            using (var sender = CreateSender(protocol, host, port))
            {
                var serializer = CreateSerializer(flavor);

                // ReSharper disable once RedundantExplicitParamsArrayCreation - SyslogNet does not handle the params array properly during serialization without explicitly creating the empty array.
                var message = new SyslogMessage(DateTimeOffset.Now, Facility.LogAudit, Severity.Informational, Environment.MachineName, "Apprenda.AddOns.Syslog", "-", "TEST", "Connection test message", new StructuredDataElement[0]);
                sender.Send(message, serializer);
            }

            mapType.ToUpperInvariant().Should().BeOneOf("DEFAULT", "8.1", "8.1CEF");

            return(SuccessResult("The Syslog addon connected successfully."));
        }
Пример #38
0
        // Testing Instance
        // Input: AddonTestRequest request
        // Output: OperationResult
        public override OperationResult Test(AddonTestRequest request)
        {
            var provisionRequest = new AddonProvisionRequest { Manifest = request.Manifest, DeveloperOptions = request.DeveloperOptions };
            var manifest = request.Manifest;
            var developerOptions = request.DeveloperOptions;
            var testResult = new OperationResult { IsSuccess = false };
            var testProgress = "";

            if (manifest.Properties != null && manifest.Properties.Any())
            {
                S3DeveloperOptions devOptions;

                testProgress += "Evaluating required manifest properties...\n";
                if (!ValidateManifest(manifest, out testResult))
                {
                    return testResult;
                }

                var parseOptionsResult = ParseDevOptions(developerOptions, out devOptions);
                if (!parseOptionsResult.IsSuccess)
                {
                    return parseOptionsResult;
                }
                testProgress += parseOptionsResult.EndUserMessage;

                try
                {
                    testProgress += "Establishing connection to AWS...\n";
                    AmazonS3Client client;
                    var establishClientResult = EstablishClient(manifest, devOptions, out client);
                    if (!establishClientResult.IsSuccess)
                    {
                        return establishClientResult;
                    }
                    testProgress += establishClientResult.EndUserMessage;

                    testProgress += "Successfully connected. \n";
                    testResult.IsSuccess = true;
                    testResult.EndUserMessage = testProgress;

                    // ok and let let's try provisioning

                    var result = Provision(provisionRequest);

                    testResult.EndUserMessage += result.IsSuccess + "\n";
                    testResult.EndUserMessage += result.ConnectionData + "\n";
                    testResult.EndUserMessage += result.EndUserMessage + "\n";

                    var depResult = Deprovision(new AddonDeprovisionRequest { ConnectionData = result.ConnectionData, DeveloperOptions = provisionRequest.DeveloperOptions, Manifest = provisionRequest.Manifest });
                    if (depResult == null)
                    {
                        throw new ArgumentNullException("request");
                    }

                    testResult.EndUserMessage += depResult.IsSuccess + "\n";
                    testResult.EndUserMessage += depResult.EndUserMessage;
                }
                catch (Exception e)
                {
                    testResult.EndUserMessage = e.Message + e.StackTrace;
                }
            }
            else
            {
                testResult.EndUserMessage = "Missing required manifest properties (requireDevCredentials)";
            }

            return testResult;
        }
Пример #39
0
 // Testing Instance
 // Input: AddonTestRequest request
 // Output: OperationResult
 public abstract override OperationResult Test(AddonTestRequest request);