public void WithDatabase()
        {
            var connectionStringBuilder =
                new SpannerConnectionStringBuilder("Data Source=projects/project1/instances/instance1");

            Assert.Null(connectionStringBuilder.SpannerDatabase);
            connectionStringBuilder = connectionStringBuilder.WithDatabase("db1");
            Assert.Equal("db1", connectionStringBuilder.SpannerDatabase);
            connectionStringBuilder = connectionStringBuilder.WithDatabase("db2");
            Assert.Equal("db2", connectionStringBuilder.SpannerDatabase);
            connectionStringBuilder = connectionStringBuilder.WithDatabase(null);
            Assert.Null(connectionStringBuilder.SpannerDatabase);
        }
Exemplo n.º 2
0
        public void WithDatabase()
        {
            var builder = new SpannerConnectionStringBuilder("Data Source=projects/project1/instances/instance1");

            Assert.Null(builder.SpannerDatabase);
            builder = builder.WithDatabase("db1");
            Assert.Equal("project1", builder.Project);
            Assert.Equal("instance1", builder.SpannerInstance);
            Assert.Equal("db1", builder.SpannerDatabase);
            builder = builder.WithDatabase("db2");
            Assert.Equal("db2", builder.SpannerDatabase);
            builder = builder.WithDatabase(null);
            Assert.Null(builder.SpannerDatabase);
        }
        private SpannerTestDatabase(string projectId)
        {
            TestLogger.Install();

            ProjectId = projectId;
            var builder = new SpannerConnectionStringBuilder
            {
                Host       = SpannerHost,
                DataSource = $"projects/{ProjectId}/instances/{SpannerInstance}"
            };

            if (SpannerPort != null)
            {
                builder.Port = int.Parse(SpannerPort);
            }
            NoDbConnectionString = builder.ConnectionString;
            ConnectionString     = builder.WithDatabase(SpannerDatabase).ConnectionString;

            if (Fresh)
            {
                using (var connection = new SpannerConnection(NoDbConnectionString))
                {
                    var createCmd = connection.CreateDdlCommand($"CREATE DATABASE {SpannerDatabase}");
                    createCmd.ExecuteNonQuery();
                }
            }
        }
Exemplo n.º 4
0
        public async Task CreateWithExtrasDrop2()
        {
            string dbName  = GenerateDatabaseName();
            var    builder = new SpannerConnectionStringBuilder(_fixture.Database.NoDbConnectionString);

            using (var connection = new SpannerConnection(builder))
            {
                var createCmd = connection.CreateDdlCommand(
                    $"CREATE DATABASE {dbName}");

                await createCmd.ExecuteNonQueryAsync().ConfigureAwait(false);
            }

            using (var connection = new SpannerConnection(builder.WithDatabase(dbName)))
            {
                const string tableCreate1 = @"CREATE TABLE TX1 (
                              K                   STRING(MAX) NOT NULL,
                              StringValue         STRING(MAX),
                            ) PRIMARY KEY (K)";
                const string tableCreate2 = @"CREATE TABLE TX2 (
                              K                   STRING(MAX) NOT NULL,
                              StringValue         STRING(MAX),
                            ) PRIMARY KEY (K)";
                var          updateCmd    = connection.CreateDdlCommand(tableCreate1, tableCreate2);
                await updateCmd.ExecuteNonQueryAsync().ConfigureAwait(false);

                var cmd = connection.CreateInsertCommand("TX2", new SpannerParameterCollection
                {
                    { "K", SpannerDbType.String, "key" },
                    { "StringValue", SpannerDbType.String, "value" }
                });
                await cmd.ExecuteNonQueryAsync();

                cmd = connection.CreateSelectCommand("SELECT * FROM TX2");
                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    await reader.ReadAsync();

                    Assert.Equal("key", reader.GetFieldValue <string>("K"));
                    Assert.Equal("value", reader.GetFieldValue <string>("StringValue"));
                }
            }

            using (var connection = new SpannerConnection(builder))
            {
                var dropCommand = connection.CreateDdlCommand($"DROP DATABASE {dbName}");
                await dropCommand.ExecuteNonQueryAsync().ConfigureAwait(false);
            }
        }
Exemplo n.º 5
0
        public SnippetFixture()
        {
            var builder = new SpannerConnectionStringBuilder
            {
                Host = SpannerHost,
                DataSource = $"projects/{ProjectId}/instances/{SpannerInstance}"
            };
            if (SpannerPort != null)
            {
                builder.Port = int.Parse(SpannerPort);
            }
            NoDbConnectionString = builder.ConnectionString;
            ConnectionString = builder.WithDatabase(SpannerDatabase).ConnectionString;

            _creationTask = new Lazy<Task>(EnsureTestDatabaseImplAsync);
        }
Exemplo n.º 6
0
        public async Task DdlCommandReturnsErrors()
        {
            string dbName  = GenerateDatabaseName();
            var    builder = new SpannerConnectionStringBuilder(_fixture.Database.NoDbConnectionString);

            using (var connection = new SpannerConnection(builder))
            {
                const string tableSingers = @"
                        CREATE TABLE Singers (
                          SingerId INT64 NOT NULL,
                          FirstName STRING(1024),
                          LastName STRING(1024),
                          ComposerInfo BYTES(MAX),
                        ) PRIMARY KEY(SingerId)";

                const string tableAlbums = @"CREATE TABLE Albums (
                      SingerId INT64 NOT NULL,
                      AlbumId INT64 NOT NULL,
                      AlbumTitle STRING(MAX),
                    ) PRIMARY KEY(SingerId, AlbumId),
                      INTERLEAVE IN PARENT Singers ON DELETE CASCADE";

                var createCmd = connection.CreateDdlCommand(
                    $"CREATE DATABASE {dbName}",
                    tableSingers, tableAlbums);

                await createCmd.ExecuteNonQueryAsync().ConfigureAwait(false);
            }

            using (var connection = new SpannerConnection(builder.WithDatabase(dbName)))
            {
                var dropSingersCmd = connection.CreateDdlCommand("DROP TABLE Singers");
                var dropAlbumsCmd  = connection.CreateDdlCommand("DROP TABLE Albums");

                await Assert.ThrowsAsync <SpannerException>(() => dropSingersCmd.ExecuteNonQueryAsync());

                await dropAlbumsCmd.ExecuteNonQueryAsync();

                await dropSingersCmd.ExecuteNonQueryAsync();
            }

            using (var connection = new SpannerConnection(builder))
            {
                var dropCommand = connection.CreateDdlCommand($"DROP DATABASE {dbName}");
                await dropCommand.ExecuteNonQueryAsync().ConfigureAwait(false);
            }
        }
        private SpannerTestDatabase(string projectId)
        {
            TestLogger.Install();

            ProjectId = projectId;
            var builder = new SpannerConnectionStringBuilder
            {
                Host              = SpannerHost,
                DataSource        = $"projects/{ProjectId}/instances/{SpannerInstance}",
                EmulatorDetection = EmulatorDetection.EmulatorOrProduction
            };

            if (SpannerPort != null)
            {
                builder.Port = int.Parse(SpannerPort);
            }
            NoDbConnectionString         = builder.ConnectionString;
            SpannerClientCreationOptions = new SpannerClientCreationOptions(builder);
            var databaseBuilder = builder.WithDatabase(SpannerDatabase);

            ConnectionString = databaseBuilder.ConnectionString;
            DatabaseName     = databaseBuilder.DatabaseName;

            MaybeCreateInstanceOnEmulator(projectId);
            if (Fresh)
            {
                using (var connection = new SpannerConnection(NoDbConnectionString))
                {
                    var createCmd = connection.CreateDdlCommand($"CREATE DATABASE {SpannerDatabase}");
                    createCmd.ExecuteNonQuery();
                    Logger.DefaultLogger.Debug($"Created database {SpannerDatabase}");
                }
            }
            else
            {
                Logger.DefaultLogger.Debug($"Using existing database {SpannerDatabase}");
            }
        }