public void CreateAndAssociateE2E()
        {
            using (UndoContext context = UndoContext.Current)
            {
                context.Start();
                var client         = GetSiteRecoveryClient(CustomHttpHandler);
                var requestHeaders = RequestHeaders;
                requestHeaders.AgentAuthenticationHeader = GenerateAgentAuthenticationHeader(requestHeaders.ClientRequestId);

                string serializedHyperVReplicaAzureProfileManagementInput = null;

                var settings = new HyperVReplicaProtectionProfileInput();
                settings.AllowedAuthenticationType = 1;
                settings.AllowReplicaDeletion      = false;
                settings.ApplicationConsistentSnapshotFrequencyInHours = 0;
                settings.CompressionEnabled           = true;
                settings.OfflineReplicationExportPath = null;
                settings.OfflineReplicationImportPath = null;
                settings.OnlineReplicationMethod      = true;
                settings.OnlineReplicationStartTime   = null;
                settings.RecoveryPoints = 1;
                settings.ReplicationFrequencyInSeconds = 300;
                settings.ReplicationPort = 8083;

                serializedHyperVReplicaAzureProfileManagementInput =
                    DataContractUtils <HyperVReplicaProtectionProfileInput> .Serialize(settings);

                var responsePC = client.ProtectionContainer.List(RequestHeaders);

                string primaryPCId  = null;
                string recoveryPCId = null;
                foreach (var pc in responsePC.ProtectionContainers)
                {
                    if (string.IsNullOrWhiteSpace(pc.Role))
                    {
                        if (primaryPCId == null)
                        {
                            primaryPCId = pc.ID;
                            continue;
                        }

                        if (recoveryPCId == null)
                        {
                            recoveryPCId = pc.ID;
                            break;
                        }
                    }
                }

                var input = new CreateAndAssociateProtectionProfileInput();

                input.ProtectionProfileInput      = new CreateProtectionProfileInput();
                input.ProtectionProfileInput.Name = "E2E_Profile";
                input.ProtectionProfileInput.ReplicationProvider         = "HyperVReplica";
                input.ProtectionProfileInput.ReplicationProviderSettings =
                    serializedHyperVReplicaAzureProfileManagementInput;

                input.AssociationInput = new ProtectionProfileAssociationInput();
                input.AssociationInput.PrimaryProtectionContainerId  = primaryPCId;
                input.AssociationInput.RecoveryProtectionContainerId = recoveryPCId;

                JobResponse response = client.ProtectionProfile.CreateAndAssociate(input, requestHeaders);

                Assert.NotNull(response.Job);
                Assert.NotNull(response.Job.ID);
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            }
        }
        public void CreateAndAssociateE2E()
        {
            using (UndoContext context = UndoContext.Current)
            {
                context.Start();
                var client = GetSiteRecoveryClient(CustomHttpHandler);
                var requestHeaders = RequestHeaders;
                requestHeaders.AgentAuthenticationHeader = GenerateAgentAuthenticationHeader(requestHeaders.ClientRequestId);

                string serializedHyperVReplicaAzureProfileManagementInput = null;
               
                var settings = new HyperVReplicaProtectionProfileInput();
                settings.AllowedAuthenticationType = 1;
                settings.AllowReplicaDeletion = false;
                settings.ApplicationConsistentSnapshotFrequencyInHours = 0;
                settings.CompressionEnabled = true;
                settings.OfflineReplicationExportPath = null;
                settings.OfflineReplicationImportPath = null;
                settings.OnlineReplicationMethod = true;
                settings.OnlineReplicationStartTime = null;
                settings.RecoveryPoints = 1;
                settings.ReplicationFrequencyInSeconds = 300;
                settings.ReplicationPort = 8083;

                serializedHyperVReplicaAzureProfileManagementInput =
                    DataContractUtils<HyperVReplicaProtectionProfileInput>.Serialize(settings);

                var responsePC = client.ProtectionContainer.List(RequestHeaders);

                string primaryPCId = null;
                string recoveryPCId = null;
                foreach (var pc in responsePC.ProtectionContainers)
                {
                    if (string.IsNullOrWhiteSpace(pc.Role))
                    {
                        if (primaryPCId == null)
                        {
                            primaryPCId = pc.ID;
                            continue;
                        }

                        if (recoveryPCId == null)
                        {
                            recoveryPCId = pc.ID;
                            break;
                        }
                    }
                }

                var input = new CreateAndAssociateProtectionProfileInput();

                input.ProtectionProfileInput = new CreateProtectionProfileInput();
                input.ProtectionProfileInput.Name = "E2E_Profile";
                input.ProtectionProfileInput.ReplicationProvider = "HyperVReplica";
                input.ProtectionProfileInput.ReplicationProviderSettings =
                    serializedHyperVReplicaAzureProfileManagementInput;

                input.AssociationInput = new ProtectionProfileAssociationInput();
                input.AssociationInput.PrimaryProtectionContainerId = primaryPCId;
                input.AssociationInput.RecoveryProtectionContainerId = recoveryPCId;

                JobResponse response = client.ProtectionProfile.CreateAndAssociate(input, requestHeaders);

                Assert.NotNull(response.Job);
                Assert.NotNull(response.Job.ID);
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            }
        }