Beispiel #1
0
    public void GetConnection_ReturnsNonNullInstance()
    {
        CosmosDbStorage storage = new(url, secret, database, container);

        using CosmosDbConnection connection = (CosmosDbConnection)storage.GetConnection();
        Assert.NotNull(connection);
    }
 public GremlinExecutor(CosmosDbConnection config, IConsole console)
 {
     _console      = console;
     _server       = GremlinExecutor.GetGremlinServer(config);
     _partitionKey = config.PartitionKey;
     _client       = new GremlinClient(_server, new GraphSON2Reader(), new GraphSON2Writer(), GremlinClient.GraphSON2MimeType);
 }
Beispiel #3
0
    public void WithExistingCosmosClient_GetConnection_ReturnsNonNullInstance()
    {
        CosmosDbStorage storage = CreateSutWithCosmosClient();

        using CosmosDbConnection connection = (CosmosDbConnection)storage.GetConnection();
        Assert.NotNull(connection);
    }
        /// <summary>
        /// Gets the options.
        /// </summary>
        /// <param name="sharedDataSource">The shared data source.</param>
        /// <returns>DbContextOptions.</returns>
        /// <exception cref="System.Configuration.ConfigurationErrorsException">SharedDataSource Type not found</exception>
        public DbContextOptions GetOptions(string sharedDataSource)
        {
            var conn    = new CosmosDbConnection(_sharedConnectionStringResolver.GetConnectionString(sharedDataSource));
            var builder = new DbContextOptionsBuilder <EFCoreDataContext>()
                          .UseCosmos(conn.AccountEndpoint, conn.AccountKey.ToUnsecureString(), conn.DatabaseName, (t) =>
            {
                //when they add some options to the class we may do some stuff here
            });

            return(builder.Options);
        }
        private static GremlinServer GetGremlinServer(CosmosDbConnection config)
        {
            var hostname   = config.GremlinEndpoint;
            var port       = config.GremlinPort;
            var authKey    = config.AuthKey;
            var databaseId = config.DatabaseId;
            var graphId    = config.GraphId;

            var gremlinServer = new GremlinServer(hostname, port, enableSsl: true, username: $"/dbs/{databaseId}/colls/{graphId}", password: authKey);

            return(gremlinServer);
        }
Beispiel #6
0
        public async Task <int> AddConnection(string connectionName, CosmosDbConnection connection, bool global = false)
        {
            string configPath = global ? GizmoConfig.ProfileConfigPath : GizmoConfig.LocalConfigPath;

            _console.WriteLine($"Adding {connectionName} to {configPath}");

            var settings = await GizmoConfig.LoadConfig(configPath);

            settings.CosmosDbConnections[connectionName] = connection;
            await GizmoConfig.SaveConfig(configPath, settings);

            return(0);
        }
Beispiel #7
0
 private static DocumentClient BuildDocumentClient(CosmosDbConnection cosmosDbConnection, RetryOptions?retryOptions)
 {
     if (retryOptions != null)
     {
         return(new DocumentClient(cosmosDbConnection !.EndpointUrl, cosmosDbConnection !.AccessKey, new ConnectionPolicy {
             RetryOptions = retryOptions
         }));
     }
     else
     {
         return(new DocumentClient(cosmosDbConnection !.EndpointUrl, cosmosDbConnection !.AccessKey));
     }
 }
        public void RepositoryGetAllListReturnsSuccess()
        {
            // arrange
            var cosmosDbConnection = new CosmosDbConnection
            {
                AccessKey    = "AccessKey",
                CollectionId = "CollectionId",
                DatabaseId   = "DatabaseId",
                EndpointUrl  = "EndpointUrl",
                PartitionKey = "PartitionKey",
            };
            var documentClient    = A.Fake <IDocumentClient>();
            var documentQueryable = A.Fake <IOrderedQueryable <HelpPageModel> >();
            var documentQuery     = A.Fake <IDocumentQuery <HelpPageModel> >();
            var feedResponse      = A.Fake <FeedResponse <HelpPageModel> >();
            var expectedResults   = A.CollectionOfFake <HelpPageModel>(2);

            A.CallTo(() => documentClient.ReadDatabaseAsync(A <Uri> .Ignored, null)).Returns(A.Fake <ResourceResponse <Database> >());
            A.CallTo(() => documentClient.ReadDocumentCollectionAsync(A <Uri> .Ignored, null)).Returns(A.Fake <ResourceResponse <DocumentCollection> >());
            A.CallTo(() => documentClient.CreateDocumentQuery <HelpPageModel>(A <Uri> .Ignored, A <FeedOptions> .Ignored)).Returns(documentQueryable);
            A.CallTo(() => documentQueryable.AsDocumentQuery()).Returns(documentQuery);
            A.CallTo(() => documentQuery.HasMoreResults).ReturnsNextFromSequence(true, true, false);
            A.CallTo(() => documentQuery.ExecuteNextAsync <HelpPageModel>(default(CancellationToken))).Returns(feedResponse);

            var repository = new Repository <HelpPageModel>(cosmosDbConnection, documentClient);

            // act
            var results = repository.GetAllAsync().Result;

            // assert
            A.CallTo(() => documentClient.ReadDatabaseAsync(A <Uri> .Ignored, null)).MustHaveHappenedOnceExactly();
            A.CallTo(() => documentClient.ReadDocumentCollectionAsync(A <Uri> .Ignored, null)).MustHaveHappenedOnceExactly();
            A.CallTo(() => documentClient.CreateDocumentQuery <HelpPageModel>(A <Uri> .Ignored, A <FeedOptions> .Ignored)).MustHaveHappenedOnceExactly();
            A.CallTo(() => documentQuery.HasMoreResults).MustHaveHappened(3, Times.Exactly);
            A.CallTo(() => documentQuery.ExecuteNextAsync <HelpPageModel>(default(CancellationToken))).MustHaveHappened(2, Times.Exactly);
            A.Equals(results, expectedResults);
        }
Beispiel #9
0
        public static IServiceCollection AddContentPageServices <TModel>(this IServiceCollection services, CosmosDbConnection cosmosDbConnection, bool isDevelopment, RetryOptions?retryOptions = null)
            where TModel : RequestTrace, IContentPageModel
        {
            _ = cosmosDbConnection ?? throw new ArgumentNullException(nameof(cosmosDbConnection));

            var documentClient = BuildDocumentClient(cosmosDbConnection, retryOptions);

            object[] serviceArguments = { cosmosDbConnection, documentClient, isDevelopment };

            services.AddSingleton(cosmosDbConnection);
            services.AddSingleton <IDocumentClient>(documentClient);
            services.AddSingleton <ICosmosRepository <TModel> >(x => ActivatorUtilities.CreateInstance <CosmosRepository <TModel> >(x, serviceArguments));
            services.AddTransient <IContentPageService <TModel>, ContentPageService <TModel> >();

            return(services);
        }
Beispiel #10
0
        public static IServiceCollection AddSessionStateServices <TModel>(this IServiceCollection services, CosmosDbConnection cosmosDbConnection, bool isDevelopment)
            where TModel : class, new()
        {
            _ = cosmosDbConnection ?? throw new ArgumentNullException(nameof(cosmosDbConnection));

            var documentClient = new DocumentClient(cosmosDbConnection !.EndpointUrl, cosmosDbConnection !.AccessKey);

            object[] serviceArguments = { cosmosDbConnection, documentClient, isDevelopment };

            services.AddSingleton(cosmosDbConnection);
            services.AddSingleton <IDocumentClient>(documentClient);
            services.AddSingleton <ICosmosRepository <SessionStateModel <TModel> > >(x => ActivatorUtilities.CreateInstance <CosmosRepository <SessionStateModel <TModel> > >(x, serviceArguments));
            services.AddTransient <IDocumentService <SessionStateModel <TModel> >, DocumentService <SessionStateModel <TModel> > >();
            services.AddTransient <ISessionStateService <TModel>, SessionStateService <TModel> >();

            return(services);
        }
Beispiel #11
0
 public AzureGraphsExecutor(CosmosDbConnection config, IConsole console)
 {
     _config  = config;
     _console = console;
 }
 internal CosmosDbServiceBase(CosmosDbConnection connection)
 {
     DataConnection = connection;
 }
        public static IServiceCollection AddSessionStateServices <TModel>(this IServiceCollection services, CosmosDbConnection cosmosDbConnection, bool isDevelopment)
            where TModel : class, new()
        {
            _ = cosmosDbConnection ?? throw new ArgumentNullException(nameof(cosmosDbConnection));

            var retryOptions = new RetryOptions {
                MaxRetryAttemptsOnThrottledRequests = 20, MaxRetryWaitTimeInSeconds = 60
            };
            var documentClient = new DocumentClient(cosmosDbConnection !.EndpointUrl, cosmosDbConnection !.AccessKey, new ConnectionPolicy {
                RetryOptions = retryOptions
            });

            object[] serviceArguments = { cosmosDbConnection, documentClient, isDevelopment };

            services.AddSingleton(cosmosDbConnection);
            services.AddSingleton <IDocumentClient>(documentClient);
            services.AddSingleton <ICosmosRepository <SessionStateModel <TModel> > >(x => ActivatorUtilities.CreateInstance <CosmosRepository <SessionStateModel <TModel> > >(x, serviceArguments));
            services.AddTransient <IDocumentService <SessionStateModel <TModel> >, DocumentService <SessionStateModel <TModel> > >();
            services.AddTransient <ISessionStateService <TModel>, SessionStateService <TModel> >();

            return(services);
        }
Beispiel #14
0
 public ControllerBase(IOptions <CosmosDbSettings> cosmosDbSettings)
 {
     SharedDataConnection = CosmosDbConnection.Singleton(cosmosDbSettings.Value);
 }
 public static ProfileService Connect(CosmosDbConnection dataConnection) => new ProfileService(dataConnection);
 private ProfileService(CosmosDbConnection dataConnection) : base(dataConnection)
 {
 }