Пример #1
0
        public async Task ReadStreamLimitTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginCassandra.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var schema = GetTestSchema("\"tks\".\"posts\"", "tks.posts");

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { schema }
            };

            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
                Limit = 10
            };

            // act
            client.Connect(connectRequest);
            var schemasResponse = client.DiscoverSchemas(schemaRequest);

            request.Schema = schemasResponse.Schemas[0];

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(3, records.Count);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #2
0
        public async Task DiscoverSchemasRefreshTest()
        {
            // setup
            PrepareTestEnvironment(false);
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginAunsight.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var discoverAllRequest = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.All,
                SampleSize = 10
            };

            var request = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { GetTestSchema($"SELECT * FROM [{Constants.SchemaName}].[ReadDirectory_VEH_POL]") },
            };

            // act
            client.Connect(connectRequest);
            client.DiscoverSchemas(discoverAllRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Single(response.Schemas);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #3
0
        public async Task DiscoverSchemasRefreshQueryTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginBigQuery.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.Refresh,
                SampleSize = 10,
                ToRefresh  = { GetTestSchema("`testdata`.`table1`", "testdata.table1", $"SELECT * FROM `testdata`.`table1`") }
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Single(response.Schemas);

            var schema = response.Schemas[0];

            Assert.Equal($"`testdata`.`table1`", schema.Id);
            Assert.Equal("testdata.table1", schema.Name);
            Assert.Equal($"SELECT * FROM `testdata`.`table1`", schema.Query);
            Assert.Equal(10, schema.Sample.Count);


            Assert.Equal(6, schema.Properties.Count);

            var property = schema.Properties[0];

            Assert.Equal("col1", property.Id);
            Assert.Equal("col1", property.Name);
            Assert.Equal("", property.Description);
            Assert.Equal(PropertyType.String, property.Type);
            Assert.False(property.IsKey);
            Assert.True(property.IsNullable);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #4
0
        public async Task DiscoverSchemasAllTest()
        {
            // setup
            PrepareTestEnvironment(false);
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginAunsight.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.All,
                SampleSize = 10
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Single(response.Schemas);

            var schema = response.Schemas[0];

            Assert.Equal($"[{Constants.SchemaName}].[ReadDirectory_VEH_POL]", schema.Id);
            Assert.Equal("ReadDirectory_VEH_POL", schema.Name);
            Assert.Equal($"SELECT * FROM [{Constants.SchemaName}].[ReadDirectory_VEH_POL]", schema.Query);
            // Assert.Equal(Count.Types.Kind.Exact, schema.Count.Kind);
            // Assert.Equal(1000, schema.Count.Value);
            Assert.Equal(10, schema.Sample.Count);
            Assert.Equal(138, schema.Properties.Count);

            var property = schema.Properties[0];

            Assert.Equal("VEH.NUM", property.Id);
            Assert.Equal("VEH.NUM", property.Name);
            Assert.Equal("", property.Description);
            Assert.Equal(PropertyType.String, property.Type);
            Assert.False(property.IsKey);
            Assert.True(property.IsNullable);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #5
0
        public async Task DiscoverSchemasRefreshTableTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginOracleNet.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            int port = server.Ports.First().BoundPort;

            Channel channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);

            Publisher.PublisherClient client = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.Refresh,
                SampleSize = 10,
                ToRefresh  = { GetTestSchema(TestSchemaID, TestSchemaName) }
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Single(response.Schemas);

            var schema = response.Schemas[0];

            Assert.Equal(TestSchemaID, schema.Id);
            Assert.Equal(TestSchemaName, schema.Name);
            Assert.Equal($"", schema.Query);
            Assert.Equal(TestSampleCount, schema.Sample.Count);
            Assert.Equal(TestPropertyCount, schema.Properties.Count);

            var property = schema.Properties[4];

            Assert.Equal(TestPropertyID, property.Id);
            Assert.Equal(TestPropertyName, property.Name);
            Assert.Equal("", property.Description);
            Assert.Equal(PropertyType.String, property.Type);
            Assert.False(property.IsKey);
            Assert.True(property.IsNullable);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #6
0
        public async Task ReadStreamTableSchemaTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginDb2.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();


            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
            };

            // act
            client.Connect(connectRequest);
            var schemas = client.DiscoverSchemas(new DiscoverSchemasRequest());

            request.Schema = schemas.Schemas.First();

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(1000, records.Count);

            var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson);

            Assert.Equal((long)1, record["\"ID\""]);
            Assert.Equal("Madison", record["\"FIRST_NAME\""]);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #7
0
        public async Task DiscoverSchemasRefreshTableTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginSnowflake.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.Refresh,
                SampleSize = 10,
                ToRefresh  = { GetTestSchema("\"PUBLIC\".\"MOCK_DATA\"", "PUBLIC.MOCK_DATA") }
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Equal(1, response.Schemas.Count);

            var schema = response.Schemas[0];

            Assert.Equal($"\"PUBLIC\".\"MOCK_DATA\"", schema.Id);
            Assert.Equal("PUBLIC.MOCK_DATA", schema.Name);
            Assert.Equal($"", schema.Query);
            Assert.Equal(10, schema.Sample.Count);
            Assert.Equal(11, schema.Properties.Count);

            var property = schema.Properties[0];

            Assert.Equal("\"ID\"", property.Id);
            Assert.Equal("ID", property.Name);
            Assert.Equal("", property.Description);
            Assert.Equal(PropertyType.Text, property.Type);
            Assert.False(property.IsKey);
            Assert.True(property.IsNullable);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #8
0
        public async Task DiscoverSchemasAllTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginBigQuery.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.All,
                SampleSize = 10
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Equal(8, response.Schemas.Count);

            var schema = response.Schemas[0];

            Assert.Equal($"`testdata`.`NaveegoReplicationMetaData`", schema.Id);
            Assert.Equal("testdata.NaveegoReplicationMetaData", schema.Name);
            Assert.Equal($"", schema.Query);
            Assert.Equal(2, schema.Sample.Count);
            Assert.Equal(5, schema.Properties.Count);


            var property = schema.Properties[0];

            Assert.Equal("NaveegoJobId", property.Id);
            Assert.Equal("NaveegoJobId", property.Name);
            Assert.Equal("", property.Description);
            Assert.Equal(PropertyType.String, property.Type);
            Assert.False(property.IsKey);
            Assert.True(property.IsNullable);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #9
0
        public async Task DiscoverSchemasRefreshTest()
        {
            // set up
            Server server = new Server
            {
                Services = { Publisher.BindService(new Plugin.Plugin(GetMockHttpMessageHandler().ToHttpClient())) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { GetTestSchema("DiscoverSchemas") }
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Single(response.Schemas);

            var schema = response.Schemas[0];

            Assert.Equal("test", schema.Id);
            Assert.Equal("test", schema.Name);
            Assert.Equal(2, schema.Properties.Count);

            var firstProperty = schema.Properties[0];

            Assert.Equal("_id", firstProperty.Id);
            Assert.Equal("_id", firstProperty.Name);
            Assert.Equal(PropertyType.String, firstProperty.Type);

            var secondProperty = schema.Properties[1];

            Assert.Equal("title", secondProperty.Id);
            Assert.Equal("title", secondProperty.Name);
            Assert.Equal(PropertyType.String, secondProperty.Type);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #10
0
        public async Task DiscoverSchemasRefreshTableTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginAmazonAurora.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.Refresh,
                SampleSize = 10,
                ToRefresh  = { GetTestSchema("`classicmodels`.`customers`", "classicmodels.customers") }
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Single(response.Schemas);

            var schema = response.Schemas[0];

            Assert.Equal($"`classicmodels`.`customers`", schema.Id);
            Assert.Equal("classicmodels.customers", schema.Name);
            Assert.Equal($"", schema.Query);
            Assert.Equal(10, schema.Sample.Count);
            Assert.Equal(13, schema.Properties.Count);

            var property = schema.Properties[0];

            Assert.Equal("`customerNumber`", property.Id);
            Assert.Equal("customerNumber", property.Name);
            Assert.Equal("", property.Description);
            Assert.Equal(PropertyType.Integer, property.Type);
            Assert.True(property.IsKey);
            Assert.False(property.IsNullable);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #11
0
        public async Task DiscoverSchemasRefreshTest()
        {
            // setup
            var mockHttp = new MockHttpMessageHandler();

            mockHttp.When("https://creator.zoho.com/api/json/applications?scope=creatorapi&authtoken=mocktoken")
            .Respond("application/json",
                     "{\"result\":{\"application_list\":{\"applications\":[{\"application\":[{\"created_time\":\"2019-03-1305:29:27.0\",\"application_name\":\"EventManagement\",\"access\":\"private\",\"link_name\":\"event-management\",\"time_zone\":\"IST\",\"dateformat\":\"dd-MMM-yyyy\"}]}]},\"application_owner\":\"wyattroehler\"}}");

            mockHttp.When("https://creator.zoho.com/api/json/event-management/formsandviews?scope=creatorapi&zc_ownername=wyattroehler&authtoken=mocktoken")
            .Respond("application/json",
                     "{\"application-name\":[\"event-management\",{\"viewList\":[{\"viewCount\":8},{\"linkid\":71,\"componentid\":3836610000000031391,\"displayname\":\"BookEvents\",\"componentname\":\"Book_Events_Mobile\",\"formlinkname\":\"Create_New_Event\"},{\"linkid\":72,\"componentid\":3836610000000031569,\"displayname\":\"EventsCalendar\",\"componentname\":\"Events_Calendar\",\"formlinkname\":\"Create_New_Event\"},{\"linkid\":73,\"componentid\":3836610000000031573,\"displayname\":\"AllEventsList\",\"componentname\":\"All_Events_List\",\"formlinkname\":\"Create_New_Event\"},{\"linkid\":74,\"componentid\":3836610000000031577,\"displayname\":\"PaidEventBookings\",\"componentname\":\"Booked_Entries\",\"formlinkname\":\"Book_Paid_Events\"},{\"linkid\":75,\"componentid\":3836610000000031579,\"displayname\":\"FreeEventBookings\",\"componentname\":\"Booked_Free_Entries\",\"formlinkname\":\"Book_Free_Events1\"},{\"linkid\":76,\"componentid\":3836610000000031581,\"displayname\":\"AllVenues\",\"componentname\":\"All_Venues\",\"formlinkname\":\"Add_Venue\"},{\"linkid\":77,\"componentid\":3836610000000031583,\"displayname\":\"AllEventCategories\",\"componentname\":\"All_Event_Categories\",\"formlinkname\":\"Add_Event_Category\"},{\"linkid\":78,\"componentid\":3836610000000031585,\"displayname\":\"ViewAttendees\",\"componentname\":\"All_Customers\",\"formlinkname\":\"Add_Customer\"}],\"formList\":[{\"formCount\":1},{\"linkid\":49,\"displayname\":\"CreateNewEvent\",\"componentname\":\"Create_New_Event\"}]}]}");

            mockHttp.When("https://creator.zoho.com/api/json/event-management/Create_New_Event/fields?scope=creatorapi&zc_ownername=wyattroehler&authtoken=mocktoken")
            .Respond("application/json",
                     "{\"application-name\":[\"event-management\",{\"form-name\":[\"Create_New_Event\",{\"Fields\":[{\"Reqd\":true,\"Type\":100,\"Choices\":[{\"choice1\":\"3836610000000030013\"}],\"Tooltip\":\"\",\"DisplayName\":\"EventCategory\",\"Unique\":false,\"FieldName\":\"Event_Category\",\"apiType\":12},{\"Reqd\":true,\"Type\":1,\"Tooltip\":\"\",\"DisplayName\":\"EventName\",\"Unique\":false,\"MaxChar\":255,\"FieldName\":\"Event_Name\",\"Initial\":\"\",\"apiType\":1},{\"Reqd\":true,\"Type\":100,\"Choices\":[{\"choice1\":\"3836610000000030019\"}],\"Tooltip\":\"\",\"DisplayName\":\"Venue\",\"Unique\":false,\"FieldName\":\"Venue\",\"apiType\":12},{\"Reqd\":true,\"Type\":22,\"Tooltip\":\"\",\"DisplayName\":\"EventStartTime\",\"Unique\":false,\"FieldName\":\"Event_Start_Time\",\"Initial\":\"\",\"apiType\":11},{\"Reqd\":true,\"Type\":22,\"Tooltip\":\"\",\"DisplayName\":\"EventEndTime\",\"Unique\":false,\"FieldName\":\"Event_End_Time\",\"Initial\":\"\",\"apiType\":11},{\"Reqd\":false,\"Type\":31,\"Tooltip\":\"\",\"DisplayName\":\"EventID\",\"Unique\":false,\"FieldName\":\"Event_ID\",\"apiType\":9},{\"Reqd\":true,\"Type\":100,\"Choices\":[{\"choice1\":\"Free\",\"choice2\":\"Paid\"}],\"Tooltip\":\"\",\"DisplayName\":\"TicketType\",\"Unique\":false,\"FieldName\":\"Subscription_Type\",\"apiType\":12},{\"Reqd\":true,\"altTxtReq\":false,\"Type\":20,\"imgLinkReq\":false,\"imgTitleReq\":false,\"Tooltip\":\"\",\"DisplayName\":\"EventImage\",\"Unique\":false,\"FieldName\":\"Event_Image\",\"apiType\":18},{\"Reqd\":true,\"Type\":6,\"Tooltip\":\"\",\"DisplayName\":\"EntryFees\",\"Unique\":false,\"MaxChar\":10,\"FieldName\":\"Entry_Fees\",\"Initial\":\"0\",\"CurrencyType\":\"USD\",\"apiType\":8},{\"Reqd\":true,\"Type\":5,\"Tooltip\":\"\",\"DisplayName\":\"Numberofentries\",\"Unique\":false,\"MaxChar\":10,\"FieldName\":\"Number_of_entries\",\"Initial\":\"0\",\"apiType\":5},{\"Reqd\":false,\"Type\":5,\"Tooltip\":\"\",\"DisplayName\":\"AvailableEntries\",\"Unique\":false,\"MaxChar\":10,\"FieldName\":\"Available_Entries\",\"Initial\":\"0\",\"apiType\":5},{\"Reqd\":true,\"Type\":3,\"Tooltip\":\"\",\"DisplayName\":\"EventDescription\",\"Unique\":false,\"FieldName\":\"Remarks\",\"apiType\":2},{\"Reqd\":false,\"Type\":101,\"Choices\":[{\"choice1\":\"Active\",\"choice2\":\"Ended\"}],\"Tooltip\":\"\",\"DisplayName\":\"EventStatus\",\"Unique\":false,\"FieldName\":\"Event_Status\",\"apiType\":13}],\"DisplayName\":\"CreateNewEvent\"}]}]}");

            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginZohoCreator.Plugin.Plugin(mockHttp.ToHttpClient())) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { new Schema {
                                  Id = "2"
                              } }
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Empty(response.Schemas);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #12
0
        public async Task ReadStreamQueryTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginSalesforce.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var discoverRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { new Schema {
                                  Id = "Custom", Name = "Custom", Query = "SELECT id, name from Account"
                              } }
            };

            // act
            client.Connect(connectRequest);
            var discoverResponse = client.DiscoverSchemas(discoverRequest);

            var request = new ReadRequest()
            {
                Schema = discoverResponse.Schemas.First(),
            };

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(12, records.Count);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #13
0
        public async Task DiscoverSchemasAllTest()
        {
            // setup
            var mockHttp = GetMockHttpMessageHandler();

            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginSalesforce.Plugin.Plugin(mockHttp.ToHttpClient())) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var configureRequest = new ConfigureRequest
            {
                TemporaryDirectory = "../../../Temp",
                PermanentDirectory = "../../../Perm",
                LogDirectory       = "../../../Logs",
                DataVersions       = new DataVersions(),
                LogLevel           = LogLevel.Debug
            };

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode = DiscoverSchemasRequest.Types.Mode.All,
            };

            // act
            client.Configure(configureRequest);
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Equal(2, response.Schemas.Count);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #14
0
        public async Task DiscoverSchemasRefreshBadMockSchemaNameTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginMockaroo.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.Refresh,
                SampleSize = 10,
                ToRefresh  = { GetTestSchema("id", "name", new MockSchema
                    {
                        Count = 10,
                        Name  = "bad"
                    }) }
            };

            // act
            client.Connect(connectRequest);

            try
            {
                var response = client.DiscoverSchemas(request);
            }
            catch (Exception e)
            {
                // assert
                Assert.IsType <RpcException>(e);
                Assert.Contains("Schema bad not found", e.Message);
            }

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #15
0
        public async Task DiscoverSchemasRefreshQueryBadSyntaxTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginBigQuery.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.Refresh,
                SampleSize = 10,
                ToRefresh  = { GetTestSchema("testdata.table1", "testdata.table1", $"bad syntax") }
            };

            // act
            client.Connect(connectRequest);

            try
            {
                var response = client.DiscoverSchemas(request);
            }
            catch (Exception e)
            {
                // assert
                Assert.IsType <RpcException>(e);

                Regex rgx    = new Regex("Job.*contained errors", RegexOptions.Compiled);
                bool  passed = rgx.IsMatch(e.Message);
                Assert.True(passed);
            }

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #16
0
        public async Task DiscoverSchemasRefreshQueryBadSyntaxTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginMariaDB.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.Refresh,
                SampleSize = 10,
                ToRefresh  = { GetTestSchema("test", "test", $"bad syntax") }
            };

            // act
            client.Connect(connectRequest);

            try
            {
                var response = client.DiscoverSchemas(request);
            }
            catch (Exception e)
            {
                // assert
                Assert.IsType <RpcException>(e);
                Assert.Contains("You have an error in your SQL syntax", e.Message);
            }

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #17
0
        public async Task DiscoverSchemasRefreshTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginSage.Plugin.Plugin(GetMockSessionFactory())) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { new Schema
                              {
                                  Id = "3",
                                  PublisherMetaJson = "{\"Module\":\"test module\"}"
                              } }
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Single(response.Schemas);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #18
0
        public async Task DiscoverSchemasRefreshTest()
        {
            // setup
            var mockHttp = GetMockHttpMessageHandler();

            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginSalesforce.Plugin.Plugin(mockHttp.ToHttpClient())) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { new Schema {
                                  Id = "Account"
                              } }
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Single(response.Schemas);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #19
0
        public async Task DiscoverSchemasRefreshTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginRJGWebsite.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { new Schema {
                                  Id = "Classes - Read"
                              }, new Schema{
                                  Id = "Contact Us"
                              } }
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            Assert.Equal(2, response.Schemas.Count);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #20
0
        public async Task ReadStreamRealTimeTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginCampaigner.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var schema = GetTestSchema();

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { schema }
            };

            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId          = "test",
                    JobDataVersion = 1
                },
                JobId                = "test",
                RealTimeStateJson    = JsonConvert.SerializeObject(new RealTimeState()),
                RealTimeSettingsJson = JsonConvert.SerializeObject(new RealTimeSettings()),
            };

            // act
            var records = new List <Record>();

            try
            {
                client.Connect(connectRequest);
                var schemasResponse = client.DiscoverSchemas(schemaRequest);
                request.Schema = schemasResponse.Schemas[0];

                var cancellationToken = new CancellationTokenSource();
                cancellationToken.CancelAfter(5000);
                var response       = client.ReadStream(request, null, null, cancellationToken.Token);
                var responseStream = response.ResponseStream;


                while (await responseStream.MoveNext())
                {
                    records.Add(responseStream.Current);
                }
            }
            catch (Exception e)
            {
                Assert.Equal("Status(StatusCode=Cancelled, Detail=\"Cancelled\")", e.Message);
            }


            // assert
            Assert.Equal(3, records.Count);

            var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson);
            // Assert.Equal("~", record["tilde"]);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #21
0
        public async Task WriteTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginCampaigner.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var schema = GetTestSchema("UpsertSubscribers");

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { schema }
            };

            var records = new List <Record>()
            {
                {
                    new Record
                    {
                        Action        = Record.Types.Action.Upsert,
                        CorrelationId = "test",
                        RecordId      = "record1",
                        DataJson      = "{\"Account PKey\":\"\",\"ZZN9X\":\"\",\"FirstName\":\"Molly\",\"LastName\":\"Male\",\"Owner Email\":null,\"Owner First Name\":\"Jenna\",\"Owner Last Name\":\"Jenna\",\"Phone\":\"(263) 83-25052\",\"IPAddress\":null,\"EmailAddress\":\"[email protected]\",\"Lists\":\"[]\"}",
                    }
                }
            };

            var recordAcks = new List <RecordAck>();

            // act
            client.Connect(connectRequest);

            var schemasResponse = client.DiscoverSchemas(schemaRequest);

            var prepareWriteRequest = new PrepareWriteRequest()
            {
                Schema           = schemasResponse.Schemas[0],
                CommitSlaSeconds = 1000,
                DataVersions     = new DataVersions
                {
                    JobId            = "jobUnitTest",
                    ShapeId          = "shapeUnitTest",
                    JobDataVersion   = 1,
                    ShapeDataVersion = 1
                }
            };

            client.PrepareWrite(prepareWriteRequest);

            using (var call = client.WriteStream())
            {
                var responseReaderTask = Task.Run(async() =>
                {
                    while (await call.ResponseStream.MoveNext())
                    {
                        var ack = call.ResponseStream.Current;
                        recordAcks.Add(ack);
                    }
                });

                foreach (Record record in records)
                {
                    await call.RequestStream.WriteAsync(record);
                }

                await call.RequestStream.CompleteAsync();

                await responseReaderTask;
            }

            // assert
            Assert.Single(recordAcks);
            Assert.Equal("", recordAcks[0].Error);
            Assert.Equal("test", recordAcks[0].CorrelationId);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #22
0
        public async Task DiscoverSchemasAllTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginCampaigner.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var request = new DiscoverSchemasRequest
            {
                Mode       = DiscoverSchemasRequest.Types.Mode.All,
                SampleSize = 10
            };

            // act
            client.Connect(connectRequest);
            var response = client.DiscoverSchemas(request);

            // assert
            Assert.IsType <DiscoverSchemasResponse>(response);
            // Assert.Equal(2, response.Schemas.Count);
            //
            // var schema = response.Schemas[0];
            // Assert.Equal($"cclf1", schema.Id);
            // Assert.Equal("cclf1", schema.Name);
            // Assert.Equal($"", schema.Query);
            // Assert.Equal(10, schema.Sample.Count);
            // Assert.Equal(17, schema.Properties.Count);
            //
            // var property = schema.Properties[0];
            // Assert.Equal("field1", property.Id);
            // Assert.Equal("field1", property.Name);
            // Assert.Equal("", property.Description);
            // Assert.Equal(PropertyType.String, property.Type);
            // Assert.False(property.IsKey);
            // Assert.True(property.IsNullable);
            //
            // var schema2 = response.Schemas[1];
            // Assert.Equal($"Custom Name", schema2.Id);
            // Assert.Equal("Custom Name", schema2.Name);
            // Assert.Equal($"", schema2.Query);
            // Assert.Equal(10, schema2.Sample.Count);
            // Assert.Equal(17, schema2.Properties.Count);
            //
            // var property2 = schema2.Properties[0];
            // Assert.Equal("field1", property2.Id);
            // Assert.Equal("field1", property2.Name);
            // Assert.Equal("", property2.Description);
            // Assert.Equal(PropertyType.String, property2.Type);
            // Assert.False(property2.IsKey);
            // Assert.True(property2.IsNullable);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #23
0
        public async Task ReadStreamSubscriberTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginCampaigner.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var schema = GetTestSchema("ActiveSubscribers");

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { schema }
            };

            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
            };

            // act
            client.Connect(connectRequest);
            var schemasResponse = client.DiscoverSchemas(schemaRequest);

            request.Schema = schemasResponse.Schemas[0];

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(2, records.Count);

            var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson);
            // Assert.Equal("~", record["tilde"]);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #24
0
        public async Task ReadStreamTest()
        {
            // setup
            PrepareTestEnvironment(false);
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginAunsight.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode = DiscoverSchemasRequest.Types.Mode.All,
            };

            var settings = GetSettings();
            var schema   = GetTestSchema($"SELECT * FROM [{Constants.SchemaName}].[ReadDirectory]");

            schema.PublisherMetaJson = JsonConvert.SerializeObject(new SchemaPublisherMetaJson
            {
                RootPath = settings.RootPaths.First()
            });

            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
            };

            // act
            client.Connect(connectRequest);
            var schemasResponse = client.DiscoverSchemas(schemaRequest);

            request.Schema = schemasResponse.Schemas[0];

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(1000, records.Count);

            var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson);

            Assert.Equal("46904477493454029959SPNUZMVK63614033839X", record["id"]);
            Assert.Equal("40", record["data1"]);
            Assert.Equal("2019-09-04", record["date1"]);
            Assert.Equal("2019-09-04", record["date2"]);
            Assert.Equal("1827C30681", record["data2"]);
            Assert.Equal("    000000000000000293.44", record["data3"]);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #25
0
        public async Task ReadStreamQuerySchemaTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginOracleNet.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var schema = GetTestSchema("test", "test", $"SELECT * FROM \"C##DEMO\".\"ACCOUNTARCHIVE\"");

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { schema }
            };

            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
            };

            // act
            client.Connect(connectRequest);
            var schemasResponse = client.DiscoverSchemas(schemaRequest);

            request.Schema = schemasResponse.Schemas[0];

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Naveego.Sdk.Plugins.Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(5, records.Count);

            var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson);

            Assert.Equal("3", record["\"CHANNEL_ID\""]);
            Assert.Equal("Direct Sales", record["\"CHANNEL_DESC\""]);
            Assert.Equal("Direct", record["\"CHANNEL_CLASS\""]);
            Assert.Equal("12", record["\"CHANNEL_CLASS_ID\""]);
            Assert.Equal("Channel total", record["\"CHANNEL_TOTAL\""]);
            Assert.Equal("1", record["\"CHANNEL_TOTAL_ID\""]);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #26
0
        public async Task ReadStreamQuerySchemaTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginMariaDB.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var schema = GetTestSchema("test", "test", $"SELECT * FROM `classicmodels`.`orders`");

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { schema }
            };

            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
            };

            // act
            client.Connect(connectRequest);
            var schemasResponse = client.DiscoverSchemas(schemaRequest);

            request.Schema = schemasResponse.Schemas[0];

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(326, records.Count);

            var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson);

            Assert.Equal((long)10100, record["`orderNumber`"]);
            Assert.Equal(DateTime.Parse("2003-01-06"), record["`orderDate`"]);
            Assert.Equal(DateTime.Parse("2003-01-13"), record["`requiredDate`"]);
            Assert.Equal(DateTime.Parse("2003-01-10"), record["`shippedDate`"]);
            Assert.Equal("Shipped", record["`status`"]);
            Assert.Equal("", record["`comments`"]);
            Assert.Equal((long)363, record["`customerNumber`"]);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #27
0
        public async Task ReadStreamTableSchemaTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginMariaDB.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var schema = GetTestSchema("`classicmodels`.`customers`", "classicmodels.customers");

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { schema }
            };

            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
            };

            // act
            client.Connect(connectRequest);
            var schemasResponse = client.DiscoverSchemas(schemaRequest);

            request.Schema = schemasResponse.Schemas[0];

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(122, records.Count);

            var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson);

            Assert.Equal((long)103, record["`customerNumber`"]);
            Assert.Equal("Atelier graphique", record["`customerName`"]);
            Assert.Equal("Schmitt", record["`contactLastName`"]);
            Assert.Equal("Carine", record["`contactFirstName`"]);
            Assert.Equal("40.32.2555", record["`phone`"]);
            Assert.Equal("54, rue Royale", record["`addressLine1`"]);
            Assert.Equal("", record["`addressLine2`"]);
            Assert.Equal("Nantes", record["`city`"]);
            Assert.Equal("", record["`state`"]);
            Assert.Equal("44000", record["`postalCode`"]);
            Assert.Equal("France", record["`country`"]);
            Assert.Equal((long)1370, record["`salesRepEmployeeNumber`"]);
            Assert.Equal("21000.00", record["`creditLimit`"]);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #28
0
        public async Task ReadStreamQuerySchemaTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginBigQuery.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var schema = GetTestSchema("`testdata`,`table1`", "testdata.table1", $"SELECT * FROM `testdata`.`table1`");

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { schema }
            };

            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
            };

            // act
            client.Connect(connectRequest);

            var schemasResponse = client.DiscoverSchemas(schemaRequest);

            request.Schema = schemasResponse.Schemas[0];

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }


            // assert
            Assert.Equal(10, records.Count);

            var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[9].DataJson);

            Assert.Equal("64", record["col1"]);
            // Assert.Equal("101", record["col2"]);
            // Assert.Equal("Kevin O'Leary", record["col3"]);
            // Assert.Equal("202", record["col4"]);
            // Assert.True(Boolean.Parse(record["col5"].ToString()));
            // Assert.Equal(DateTime.Parse("2003-01-06T00:00:00"), record["col6"]);


            // var record2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[1].DataJson);
            // Assert.Equal(null, record2["col1"]);
            // Assert.Equal("-4.8", record2["col2"]);
            // Assert.Equal("back\\this", record2["col3"]);
            // Assert.Equal(null, record2["col4"]);
            // Assert.False(Boolean.Parse(record2["col5"].ToString()));
            // Assert.Equal(DateTime.Parse("1001-01-01T00:00:00"), record2["col6"]);
            //
            // var record3 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[2].DataJson);
            // Assert.Equal(null, record3["col1"]);
            // Assert.Equal("-4.8", record3["col2"]);
            // Assert.Equal("apostrophe'''THAT'", record3["col3"]);
            // Assert.Equal(null, record3["col4"]);
            // Assert.False(Boolean.Parse(record3["col5"].ToString()));
            // Assert.Equal(DateTime.Parse("1001-01-01T00:00:00"), record3["col6"]);
            //
            // var record4 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[4].DataJson);
            // Assert.Equal("3", record4["col1"]);
            // Assert.Equal("-4.8", record4["col2"]);
            // Assert.Equal("tricky\\\''this", record4["col3"]);
            // Assert.Equal(null, record4["col4"]);
            // Assert.False(Boolean.Parse(record4["col5"].ToString()));
            // Assert.Equal(DateTime.Parse("0001-01-01T00:00:00"), record4["col6"]);
            //
            // var record5 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[3].DataJson);
            // Assert.Equal("1", record5["col1"]);
            // Assert.Equal("2.2", record5["col2"]);
            // Assert.Equal("", record5["col3"]);
            // Assert.Equal(null, record5["col4"]);
            // Assert.False(Boolean.Parse(record5["col5"].ToString()));
            // Assert.Equal(DateTime.Parse("1970-01-01T00:00:00"), record5["col6"]);


            // var record6 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[5].DataJson);
            // var record7 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[6].DataJson);
            // var record8 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[7].DataJson);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #29
0
        public async Task ReadStreamQuerySchemaTest()
        {
            // setup
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginHive.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var schema = GetTestSchema("test", "test", $"SELECT * FROM \"public\".\"actor\"");

            var connectRequest = GetConnectSettings();

            var schemaRequest = new DiscoverSchemasRequest
            {
                Mode      = DiscoverSchemasRequest.Types.Mode.Refresh,
                ToRefresh = { schema }
            };

            var request = new ReadRequest()
            {
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
            };

            // act
            client.Connect(connectRequest);
            var schemasResponse = client.DiscoverSchemas(schemaRequest);

            request.Schema = schemasResponse.Schemas[0];

            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(200, records.Count);

            var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson);

            Assert.Equal((long)1, record["\"actor_id\""]);
            Assert.Equal("PENELOPE", record["\"first_name\""]);
            Assert.Equal("GUINESS", record["\"last_name\""]);
            Assert.Equal(DateTime.Parse("2/15/2017 4:34:33 AM"), record["\"last_update\""]);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }
Пример #30
0
        public async Task ReadStreamLimitTest()
        {
            // setup
            PrepareTestEnvironment(false);
            Server server = new Server
            {
                Services = { Publisher.BindService(new PluginAunsight.Plugin.Plugin()) },
                Ports    = { new ServerPort("localhost", 0, ServerCredentials.Insecure) }
            };

            server.Start();

            var port = server.Ports.First().BoundPort;

            var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure);
            var client  = new Publisher.PublisherClient(channel);

            var connectRequest = GetConnectSettings();

            var discoverAllRequest = new DiscoverSchemasRequest
            {
                Mode = DiscoverSchemasRequest.Types.Mode.All,
            };

            var settings = GetSettings();
            var schema   = GetTestSchema($"SELECT * FROM [{Constants.SchemaName}].[ReadDirectory_VEH_POL]");

            schema.PublisherMetaJson = JsonConvert.SerializeObject(new SchemaPublisherMetaJson
            {
                RootPath = settings.RootPaths.First()
            });

            var request = new ReadRequest()
            {
                Schema       = schema,
                Limit        = 10,
                DataVersions = new DataVersions
                {
                    JobId = "test"
                },
                JobId = "test",
            };

            // act
            client.Connect(connectRequest);
            client.DiscoverSchemas(discoverAllRequest);
            var response       = client.ReadStream(request);
            var responseStream = response.ResponseStream;
            var records        = new List <Record>();

            while (await responseStream.MoveNext())
            {
                records.Add(responseStream.Current);
            }

            // assert
            Assert.Equal(10, records.Count);

            // cleanup
            await channel.ShutdownAsync();

            await server.ShutdownAsync();
        }