Exemplo n.º 1
0
        public void MergeTest()
        {
            var    epoch       = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
            string uniqueName  = ((DateTime.UtcNow - epoch).TotalSeconds).ToString();
            string uniqueName2 = uniqueName + "_";

            UnAuthCredentials.Clear();

            AutoResetEvent ars            = new AutoResetEvent(false);
            string         failureMessage = string.Empty;

            CognitoSyncManager sm1           = null;
            AutoResetEvent     mainThreadArs = new AutoResetEvent(false);

            Amazon.Runtime.Internal.UnityRequestQueue.Instance.ExecuteOnMainThread(() =>
            {
                sm1 = new CognitoSyncManager(AuthCredentials, TestRunner.RegionEndpoint);
                mainThreadArs.Set();
            });
            mainThreadArs.WaitOne();
            sm1.WipeData(false);
            Thread.Sleep(2000);
            Dataset d = sm1.OpenOrCreateDataset("test");

            d.Put(uniqueName, uniqueName);
            d.OnSyncSuccess += delegate(object s1, SyncSuccessEventArgs e1)
            {
                ars.Set();
            };
            d.OnSyncFailure += delegate(object s, SyncFailureEventArgs e)
            {
                failureMessage += string.Format("Not expecting OnSyncFailure Got exception {0}\n", e.Exception.Message);
                ars.Set();
            };
            d.OnSyncConflict += (Dataset dataset, List <SyncConflict> syncConflicts) =>
            {
                failureMessage += "Not expecting OnSyncConflict\n";
                return(false);
            };
            d.OnDatasetDeleted += (Dataset dataset) =>
            {
                failureMessage += "Not expecting OnDatasetDeleted\n";
                return(false);
            };
            d.OnDatasetMerged += (Dataset dataset, List <string> datasetNames) =>
            {
                failureMessage += "Not expecting OnDatasetMerged\n";
                return(false);
            };
            d.SynchronizeAsync(new AsyncOptions {
                ExecuteCallbackOnMainThread = false
            });
            ars.WaitOne();

            d.Dispose();
            sm1.Dispose();
            Utils.AssertStringIsNullOrEmpty(failureMessage);

            UnAuthCredentials.Clear();

            CognitoSyncManager sm2 = null;

            Amazon.Runtime.Internal.UnityRequestQueue.Instance.ExecuteOnMainThread(() =>
            {
                sm2 = new CognitoSyncManager(UnAuthCredentials, TestRunner.RegionEndpoint);
                mainThreadArs.Set();
            });
            mainThreadArs.WaitOne();
            Thread.Sleep(2000);

            Dataset d2 = sm2.OpenOrCreateDataset("test");

            d2.Put(uniqueName2, uniqueName2);
            d2.OnSyncSuccess += delegate(object s2, SyncSuccessEventArgs e2)
            {
                ars.Set();
            };
            d2.OnSyncFailure += (object sender, SyncFailureEventArgs e) =>
            {
                failureMessage += string.Format("Not expecting OnSyncFailure Got exception {0}\n", e.Exception.Message);
                ars.Set();
            };
            d2.OnSyncConflict += (Dataset dataset, List <SyncConflict> conflicts) =>
            {
                failureMessage += "Not expecting OnSyncConflict\n";
                return(false);
            };
            d2.OnDatasetDeleted += (Dataset dataset) =>
            {
                failureMessage += "Not expecting OnDatasetDeleted\n";
                return(false);
            };
            d2.OnDatasetMerged += (Dataset dataset, List <string> datasetNames) =>
            {
                failureMessage += "Not expecting OnDatasetMerged\n";
                return(false);
            };
            d2.SynchronizeAsync(new AsyncOptions {
                ExecuteCallbackOnMainThread = false
            });
            ars.WaitOne();

            d2.Dispose();
            sm2.Dispose();
            Utils.AssertStringIsNullOrEmpty(failureMessage);

            AuthCredentials.Clear();
            UnAuthCredentials.Clear();

            CognitoSyncManager sm3 = null;

            Amazon.Runtime.Internal.UnityRequestQueue.Instance.ExecuteOnMainThread(() =>
            {
                sm3 = new CognitoSyncManager(AuthCredentials, TestRunner.RegionEndpoint);
                mainThreadArs.Set();
            });
            mainThreadArs.WaitOne();

            Thread.Sleep(2000);

            Dataset d3             = sm3.OpenOrCreateDataset("test");
            bool    mergeTriggered = false;

            d3.OnSyncSuccess += (object sender, SyncSuccessEventArgs e) =>
            {
                if (!mergeTriggered)
                {
                    failureMessage += "Expecting DatasetMerged instead of OnSyncSuccess\n";
                }
                ars.Set();
            };
            d3.OnSyncFailure += (object sender, SyncFailureEventArgs e) =>
            {
                failureMessage += string.Format("Not expecting OnSyncFailure Got exception {0}\n", e.Exception.Message);
                ars.Set();
            };
            d3.OnSyncConflict += (Dataset dataset, List <SyncConflict> syncConflicts) =>
            {
                failureMessage += "Not expecting OnSyncConflict\n";
                return(false);
            };
            d3.OnDatasetDeleted += (Dataset dataset) =>
            {
                failureMessage += "Not expecting OnDatasetDeleted\n";
                return(false);
            };
            d3.OnDatasetMerged += delegate(Dataset ds, List <string> datasetNames)
            {
                mergeTriggered = true;
                return(true);
            };
            d3.SynchronizeAsync(new AsyncOptions {
                ExecuteCallbackOnMainThread = false
            });

            ars.WaitOne();
            Utils.AssertStringIsNullOrEmpty(failureMessage);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Test Case:
        /// </summary>
        //[TestMethod]
        //[TestCategory("SyncManager")]
        public void MergeTest()
        {
            var    epoch       = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
            string uniqueName  = ((DateTime.UtcNow - epoch).TotalSeconds).ToString();
            string uniqueName2 = uniqueName + "_";

            string failureMessage = string.Empty;

            UnAuthCredentials.Clear();

            using (CognitoSyncManager sm1 = new CognitoSyncManager(AuthCredentials))
            {
                sm1.WipeData(false);
                Thread.Sleep(2000);
                using (Dataset d = sm1.OpenOrCreateDataset("test"))
                {
                    d.Put(uniqueName, uniqueName);
                    d.OnSyncSuccess += delegate(object s1, SyncSuccessEventArgs e1)
                    {
                        UnAuthCredentials.Clear();

                        using (CognitoSyncManager sm2 = new CognitoSyncManager(UnAuthCredentials))
                        {
                            Thread.Sleep(2000);
                            using (Dataset d2 = sm2.OpenOrCreateDataset("test"))
                            {
                                d2.Put(uniqueName2, uniqueName2);
                                d2.OnSyncSuccess += delegate(object s2, SyncSuccessEventArgs e2)
                                {
                                    AuthCredentials.Clear();
                                    UnAuthCredentials.Clear();
                                    //now we will use auth credentials.
                                    using (CognitoSyncManager sm3 = new CognitoSyncManager(AuthCredentials))
                                    {
                                        Thread.Sleep(2000);
                                        using (Dataset d3 = sm3.OpenOrCreateDataset("test"))
                                        {
                                            bool mergeTriggered = false;
                                            d3.OnSyncSuccess += (object sender, SyncSuccessEventArgs e) =>
                                            {
                                                if (!mergeTriggered)
                                                {
                                                    failureMessage += "Expecting DatasetMerged instead of OnSyncSuccess\n";
                                                }
                                            };
                                            d3.OnSyncFailure += (object sender, SyncFailureEventArgs e) =>
                                            {
                                                failureMessage += string.Format("Not expecting OnSyncFailure Got exception {0}\n", e.Exception.Message);
                                            };
                                            d3.OnSyncConflict += (Dataset dataset, List <SyncConflict> syncConflicts) =>
                                            {
                                                failureMessage += "Not expecting OnSyncConflict\n";
                                                return(false);
                                            };
                                            d3.OnDatasetDeleted += (Dataset dataset) =>
                                            {
                                                failureMessage += "Not expecting OnDatasetDeleted\n";
                                                return(false);
                                            };
                                            d3.OnDatasetMerged += (Dataset ds, List <string> datasetNames) =>
                                            {
                                                mergeTriggered = true;
                                                return(true);
                                            };
#if BCL35
                                            d3.Synchronize();
#else
                                            RunAsSync(async() => await d3.SynchronizeAsync());
#endif
                                        }
                                    }
                                };
                                d2.OnSyncFailure += (object sender, SyncFailureEventArgs e) =>
                                {
                                    failureMessage += string.Format("Not expecting OnSyncFailure Got exception {0}\n", e.Exception.Message);
                                };
                                d2.OnSyncConflict += (Dataset dataset, List <SyncConflict> conflicts) =>
                                {
                                    failureMessage += "Not expecting OnSyncConflict\n";
                                    return(false);
                                };
                                d2.OnDatasetDeleted += (Dataset dataset) =>
                                {
                                    failureMessage += "Not expecting OnDatasetDeleted\n";
                                    return(false);
                                };
                                d2.OnDatasetMerged += (Dataset dataset, List <string> datasetNames) =>
                                {
                                    failureMessage += "Not expecting OnDatasetMerged\n";
                                    return(false);
                                };
#if BCL35
                                d2.Synchronize();
#else
                                RunAsSync(async() => await d2.SynchronizeAsync());
#endif
                            }
                        }
                    };
                    d.OnSyncFailure += delegate(object s, SyncFailureEventArgs e)
                    {
                        failureMessage += string.Format("Not expecting OnSyncFailure Got exception {0}\n", e.Exception.Message);
                    };
                    d.OnSyncConflict += (Dataset dataset, List <SyncConflict> syncConflicts) =>
                    {
                        failureMessage += "Not expecting OnSyncConflict\n";
                        return(false);
                    };
                    d.OnDatasetDeleted += (Dataset dataset) =>
                    {
                        failureMessage += "Not expecting OnDatasetDeleted\n";
                        return(false);
                    };
                    d.OnDatasetMerged += (Dataset dataset, List <string> datasetNames) =>
                    {
                        failureMessage += "Not expecting OnDatasetMerged\n";
                        return(false);
                    };
#if BCL35
                    d.Synchronize();
#else
                    RunAsSync(async() => await d.SynchronizeAsync());
#endif
                }
            }
            if (!string.IsNullOrEmpty(failureMessage))
            {
                Assert.Fail(failureMessage);
            }
        }