public void NoHeaderOnGetSessionIfEmptySessionName()
        {
            var invoker = new FakeCallInvoker();
            var client = new SpannerClientBuilder {
                CallInvoker = invoker
            }.Build();

            client.GetSession(new GetSessionRequest());
            Assert.Null(invoker.Metadata.FirstOrDefault(e => e.Key == ResourcePrefixHeader));
        }
        public void NoHeaderOnGetSessionIfInvalidSessionName()
        {
            var invoker = new FakeCallInvoker();
            var client = new SpannerClientBuilder {
                CallInvoker = invoker
            }.Build();

            client.GetSession(new GetSessionRequest {
                Name = "projects/proj/instances/inst/databases/sessions"
            });
            Assert.Null(invoker.Metadata.FirstOrDefault(e => e.Key == ResourcePrefixHeader));
        }
        public void SetsHeaderOnBatchCreateSessions()
        {
            var invoker = new FakeCallInvoker();
            var client = new SpannerClientBuilder {
                CallInvoker = invoker
            }.Build();

            client.BatchCreateSessions(new BatchCreateSessionsRequest {
                Database = SampleDatabaseName
            });
            Metadata.Entry entry = Assert.Single(invoker.Metadata, e => e.Key == ResourcePrefixHeader);
            Assert.Equal(SampleDatabaseName, entry.Value);
        }
        public void SetsHeaderOnPartitionQuery()
        {
            var invoker = new FakeCallInvoker();
            var client = new SpannerClientBuilder {
                CallInvoker = invoker
            }.Build();

            client.PartitionQuery(new PartitionQueryRequest {
                Session = SampleSessionName
            });
            Metadata.Entry entry = Assert.Single(invoker.Metadata, e => e.Key == ResourcePrefixHeader);
            Assert.Equal(SampleDatabaseName, entry.Value);
        }
        internal SpannerClientCreationOptions(SpannerConnectionStringBuilder builder)
        {
            var emulatorBuilder = new SpannerClientBuilder
            {
                EmulatorDetection           = builder.EmulatorDetection,
                EnvironmentVariableProvider = builder.EnvironmentVariableProvider
            }.MaybeCreateEmulatorClientBuilder();

            UsesEmulator = emulatorBuilder is object;
            // If the client connects to the emulator use its endpoint (regardless of builder.Endpoint)
            Endpoint         = emulatorBuilder?.Endpoint ?? builder.EndPoint;
            _credentialsFile = builder.CredentialFile;

            // If the client connects to the emulator, use its credentials (regardless of builder.CredentialOverride)
            _credentialsOverride = emulatorBuilder?.ChannelCredentials ?? builder.CredentialOverride;
            MaximumGrpcChannels  = builder.MaximumGrpcChannels;
            MaximumConcurrentStreamsLowWatermark = (uint)builder.MaxConcurrentStreamsLowWatermark;
        }
        public void BatchCreateSessions()
        {
            SpannerClientBuilder builder = new SpannerClientBuilder
            {
                Endpoint           = _fixture.Endpoint,
                ChannelCredentials = ChannelCredentials.Insecure
            };
            SpannerClient client = builder.Build();
            BatchCreateSessionsRequest request = new BatchCreateSessionsRequest
            {
                Database        = "projects/p1/instances/i1/databases/d1",
                SessionCount    = 25,
                SessionTemplate = new Session()
            };
            BatchCreateSessionsResponse response = client.BatchCreateSessions(request);

            Assert.Equal(25, response.Session.Count);
        }