示例#1
0
        public Task StartAsync(CancellationToken cancellationToken)
        {
            _syncServer.Start();
            _relayServer.Start();

            return(Task.CompletedTask);
        }
示例#2
0
        static void Main(string[] args)
        {
            var cfg = new DummyConfig();

            cfg.Clients.Add(new RegisteredClient
            {
                Id = Guid.Empty,
                FolderEndpoints =
                {
                    new ClientFolderEndpoint
                    {
                        Id          = Guid.Empty,
                        DisplayName = "f1",
                        LocalPath   = @"C:\shcherban\stest\tests\server",
                    }
                }
            });

            var srv = new SyncServer(ServerPort, Guid.Empty, cfg);

            srv.Msg += Console.WriteLine;
            srv.Start();

            var ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), ServerPort);
            var client     = SyncClientFactory.GetTwoWay(ipEndPoint, @"C:\shcherban\stest\tests\client", null, Guid.Empty, Guid.Empty);

            client.Log += Console.WriteLine;
            client.Sync().Wait();

            Console.WriteLine("Done");
            Console.ReadKey();

            srv.Stop();
        }
示例#3
0
        static void Main(string[] args)
        {
            var server = new SyncServer();

            server.Start();
            Console.ReadKey();
        }
        public async Task New_ByCollectionId_WithTooBigImageForTcp_ThrowsException()
        {
            //given
            var syncServer = new SyncServer(TestData.InstanceName, TestData.BackendAdminApiKey);
            await syncServer.Start();

            var request = new DataObjectDefinitionRequest();

            request.ProjectId    = TestData.ProjectId;
            request.CollectionId = TestData.CollectionId;

            var imageBase64 = TestData.ImageToBase64("sampleImage.jpg");

            request.ImageBase64 = imageBase64;

            try
            {
                //when
                await syncServer.DataObjects.New(request);

                throw new Exception("New should throw an exception.");
            }
            catch (Exception e)
            {
                //then
                e.ShouldBeType <SyncanoException>();
            }
        }
示例#5
0
        public static void Main(string[] args)
        {
            if (args?.Length > 0)
            {
                Console.WriteLine("Unknown args, press any key to exit");
                Console.ReadKey();
                return;
            }

            var server = new SyncServer(Port, ServerId, "config.json");

            server.Msg += ClientHandlerOnMsg;

            server.Start();

            Console.WriteLine("Listening. Press return to quit");

            Task.Run(Discover);

            while (Console.ReadKey().Key != ConsoleKey.Enter)
            {
                ;
            }

            _stopping = true;

            server.Stop();
        }
        private void PrepareServerClient()
        {
            _testServerConfig = new TestServerConfig();
            _testServerConfig.Clients.Add(new RegisteredClient
            {
                Id = Guid.Empty,
                FolderEndpoints =
                {
                    new ClientFolderEndpoint
                    {
                        Id          = Guid.Empty,
                        DisplayName = "folder1",
                        LocalPath   = _serverFolder,
                    }
                }
            });

            SessionStorage.Instance.SetTimeout(0);

            _server      = new SyncServer(ServerPort, Guid.Empty, _testServerConfig);
            _server.Msg += ServerWrite;
            _server.Start();

            var serverEp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), ServerPort);

            _client             = SyncClientFactory.GetTwoWay(serverEp, _clientFolder, null, Guid.Empty, Guid.Empty);
            _client.Log        += ClientWrite;
            _client.ErrorEvent += ClientOnErrorEvent;
        }
        private async Task PrepareSyncServer()
        {
            _syncSubscriber = new SyncServer(TestData.InstanceName, TestData.BackendAdminApiKey);
            await _syncSubscriber.Start();


            _syncServer = new SyncServer(TestData.InstanceName, TestData.BackendAdminApiKey);
            await _syncServer.Start();
        }
示例#8
0
        public void TwoWaySync_Test()
        {
            var server = new SyncServer(9211, @"D:\Taras\stest");

            server.Msg += Console.WriteLine;

            server.Start();

            var client = SyncClientFactory.GetTwoWay("127.0.0.1", 9211, @"D:\Taras\stestsrc");

            client.Sync().Wait();

            server.Stop();
        }
示例#9
0
        public async Task Login_WithInvalidPasswordOverTcp_ThrowsException()
        {
            //given
            var syncClient = new SyncServer(TestData.InstanceName, TestData.UserApiKey);
            await syncClient.Start();

            try
            {
                //when
                await syncClient.Users.Login(TestData.UserName, "abcde");

                throw new Exception("Login should throw an exception.");
            }
            catch (Exception e)
            {
                //then
                e.ShouldBeType <SyncanoException>();
            }
        }
示例#10
0
        public async Task Update_NewAvatarTooBigForTcp_ThrowsException()
        {
            //given
            var syncClient = new SyncServer(TestData.InstanceName, TestData.BackendAdminApiKey);
            await syncClient.Start();

            const string password = "******";

            try
            {
                //when
                await syncClient.Users.Update("userId", avatar : TestData.ImageToBase64("smallSampleImage.png"), currentPassword : password);

                throw new Exception("Update should throw an exception.");
            }
            catch (Exception e)
            {
                //then
                e.ShouldBeType <SyncanoException>();
            }
        }
示例#11
0
        public async Task New_WithAvatarTooBigForTcp_ThrowsException()
        {
            //given
            var syncClient = new SyncServer(TestData.InstanceName, TestData.BackendAdminApiKey);
            await syncClient.Start();

            string name   = "newUserName" + Guid.NewGuid().GetHashCode();
            string avatar = TestData.ImageToBase64("sampleImage.jpg");

            try
            {
                //when
                var user = await syncClient.Users.New(name, avatar : avatar);

                throw new Exception("New should throw an exception.");
            }
            catch (Exception e)
            {
                //then
                e.ShouldBeType <SyncanoException>();
            }
        }
示例#12
0
        private async Task PrepareSyncServer()
        {
            _syncServer = new SyncServer(TestData.InstanceName, TestData.BackendAdminApiKey);
            var loginResult = await _syncServer.Start();

            Debug.WriteLine("SyncServer login result: {0}, Info:{1}", loginResult.WasSuccessful, loginResult.Reason);
            var subscriptions = await _syncServer.RealTimeSync.GetSubscriptions();

            if (subscriptions.Count > 0)
            {
                if (subscriptions.Any(s => s.Type == "Project"))
                {
                    await _syncServer.RealTimeSync.UnsubscribeProject(TestData.ProjectId);
                }
                if (subscriptions.Any(s => s.Type == "Collection"))
                {
                    await _syncServer.RealTimeSync.UnsubscribeCollection(TestData.ProjectId, TestData.CollectionId);
                }
            }


            _currentConnection = (await _syncServer.RealTimeSync.GetConnections())[0];
        }
示例#13
0
        public static void Main(string[] args)
        {
            if (args == null || args.Length == 0)
            {
                Console.WriteLine("args empty");

                return;
            }

            Console.WriteLine(args.Length);

            Console.WriteLine(string.Join("\r\n", args));

            return;

            if (args?.Length > 0)
            {
                Console.WriteLine("Unknown args, press any key to exit");
                Console.ReadKey();
                return;
            }

            var server = new SyncServer(Port, Path);

            server.Msg += ClientHandlerOnMsg;

            server.Start();

            Console.WriteLine("Listening. Press return to quit");

            while (Console.ReadKey().Key != ConsoleKey.Enter)
            {
                ;
            }

            server.Stop();
        }
        private async void Connect()
        {
            //Login
            _syncServer = new SyncServer(this.InstanceName, this.ApiKey);
            var login = await _syncServer.Start();

            this.IsConnected = login.WasSuccessful;

            //Add subscriptions.
            if ((await _syncServer.RealTimeSync.GetSubscriptions()).Any(s => s.Type == "Project" && s.Id == this.ProjectId) == false)
            {
                await _syncServer.RealTimeSync.SubscribeProject(ProjectId);
            }

            //React on subscriptions using reactive extensions

            //Subscribe to new data notifications
            _syncServer.NewDataObservable.SubscribeOnDispatcher().Subscribe(n =>
            {
                App.Current.Dispatcher.Invoke(() => DataObjectsSync.Add(n.Data));
            });

            _syncServer.DeleteDataObservable.SubscribeOnDispatcher().Subscribe(n =>
            {
                App.Current.Dispatcher.Invoke(() =>
                {
                    RefreshDataObjectsSync();
                });
            });

            //Create Http connection object
            _syncanoClient = new Syncano.Net.SyncanoClient(this.InstanceName, this.ApiKey);

            //Load existing objects
            RefreshDataObjectsHttp();
            RefreshDataObjectsSync();
        }