示例#1
0
        public static InvokeResult <IDataStreamConnector> GetConnector(DataStreamTypes type, IAdminLogger logger)
        {
            IDataStreamConnector _streamConnector = null;

            switch (type)
            {
            case DataStreamTypes.AWSElasticSearch: _streamConnector = new AWSElasticSearchConnector(logger); break;

            case DataStreamTypes.AWSS3: _streamConnector = new AWSS3Connector(logger); break;

            case DataStreamTypes.AzureBlob: _streamConnector = new AzureBlobConnector(logger); break;

            case DataStreamTypes.AzureEventHub: _streamConnector = new AzureEventHubConnector(logger); break;

            case DataStreamTypes.AzureTableStorage:
            case DataStreamTypes.AzureTableStorage_Managed: _streamConnector = new AzureTableStorageConnector(logger); break;

            case DataStreamTypes.SQLServer: _streamConnector = new SQLServerConnector(logger); break;

            case DataStreamTypes.Redis: _streamConnector = new RedisConnector(logger); break;

            case DataStreamTypes.Postgresql: _streamConnector = new PostgresqlConnector(logger); break;

            case DataStreamTypes.PointArrayStorage: _streamConnector = new PointArrayPostgresqlConnector(logger); break;
            }

            if (_streamConnector == null)
            {
                return(InvokeResult <IDataStreamConnector> .FromError("Unsupported Stream Type"));
            }

            return(InvokeResult <IDataStreamConnector> .Create(_streamConnector));
        }
示例#2
0
        private async Task AWSInsertAsync(EntityHeader org, DataStreamTypes streamType)
        {
            var stream            = GetDataStream(streamType);
            var originalSecretKey = stream.AwsSecretKey;
            var result            = await _dataStreamManager.AddDataStreamAsync(stream, _org, _user);

            Assert.IsTrue(result.Successful);

            _secureStorage.Verify <Task <Core.Validation.InvokeResult <string> > >(obj => obj.AddSecretAsync(org, originalSecretKey), Times.Once);

            Assert.IsNull(stream.AwsSecretKey);
            Assert.AreEqual(GENERATD_SECURE_ID_VALUE, stream.AWSSecretKeySecureId);
        }
示例#3
0
        private async Task AzureReplaceKeyAsync(EntityHeader org, DataStreamTypes streamType)
        {
            var updatedAccesKey = "newlycreatedaccesskey";
            var stream          = GetDataStream(streamType);

            stream.AzureAccessKeySecureId = OLD_SECURE_ID_VALUE;
            stream.AzureAccessKey         = updatedAccesKey;
            var result = await _dataStreamManager.UpdateDataStreamAsync(stream, _org, _user);

            Assert.IsTrue(result.Successful);
            _secureStorage.Verify <Task <Core.Validation.InvokeResult <string> > >(obj => obj.AddSecretAsync(org, updatedAccesKey), Times.Once);
            _secureStorage.Verify <Task <Core.Validation.InvokeResult> >(obj => obj.RemoveSecretAsync(org, OLD_SECURE_ID_VALUE), Times.Once);
            Assert.IsNull(stream.AzureAccessKey);
            Assert.AreEqual(GENERATD_SECURE_ID_VALUE, stream.AzureAccessKeySecureId);
        }
示例#4
0
        private async Task AzureUpdateAsync(EntityHeader org, DataStreamTypes streamType)
        {
            var stream = GetDataStream(streamType);

            stream.AzureAccessKeySecureId = OLD_SECURE_ID_VALUE;
            stream.AzureAccessKey         = null;
            var result = await _dataStreamManager.UpdateDataStreamAsync(stream, _org, _user);

            Assert.IsTrue(result.Successful);

            _secureStorage.Verify <Task <Core.Validation.InvokeResult <string> > >(obj => obj.AddSecretAsync(org, It.IsAny <string>()), Times.Never);
            _secureStorage.Verify <Task <Core.Validation.InvokeResult> >(obj => obj.RemoveSecretAsync(org, It.IsAny <string>()), Times.Never);

            Assert.IsNull(stream.AzureAccessKey);
            Assert.AreEqual(OLD_SECURE_ID_VALUE, stream.AzureAccessKeySecureId);
        }
示例#5
0
        private async Task AzureInsertAsync(EntityHeader org, DataStreamTypes streamType)
        {
            var stream            = GetDataStream(streamType);
            var originalAccessKey = stream.AzureAccessKey;
            var result            = await _dataStreamManager.AddDataStreamAsync(stream, _org, _user);

            Assert.IsTrue(result.Successful);

            if (streamType == DataStreamTypes.AzureTableStorage_Managed)
            {
                Assert.AreEqual(DEFAULT_TS_ACCOUNT_ID, stream.AzureStorageAccountName);
                _secureStorage.Verify <Task <Core.Validation.InvokeResult <string> > >(obj => obj.AddSecretAsync(org, DEFAULT_TS_ACCESS_KEY), Times.Once);
            }
            else
            {
                _secureStorage.Verify <Task <Core.Validation.InvokeResult <string> > >(obj => obj.AddSecretAsync(org, originalAccessKey), Times.Once);
            }

            Assert.IsNull(stream.AzureAccessKey);

            Assert.AreEqual(GENERATD_SECURE_ID_VALUE, stream.AzureAccessKeySecureId);
        }
示例#6
0
        private DataStream GetDataStream(DataStreamTypes type)
        {
            var stream = new DataStream();

            stream.Id                = "A8A087E53D2043538F32FB18C2CA67F7";
            stream.Name              = "mystream";
            stream.Key               = "streamkey";
            stream.CreationDate      = DateTime.Now.ToJSONString();
            stream.LastUpdatedDate   = DateTime.Now.ToJSONString();
            stream.CreatedBy         = _user;
            stream.LastUpdatedBy     = _user;
            stream.OwnerOrganization = _org;
            stream.StreamType        = Core.Models.EntityHeader <DataStreamTypes> .Create(type);


            switch (type)
            {
            case DataStreamTypes.AWSElasticSearch:
                stream.AwsAccessKey            = "accesskey";
                stream.AwsSecretKey            = "accesskey";
                stream.AwsRegion               = "us-west-1";
                stream.ElasticSearchDomainName = "https://www.foo.com";
                stream.ElasticSearchIndexName  = "index";
                stream.ElasticSearchTypeName   = "type";
                break;

            case DataStreamTypes.AWSS3:
                stream.AwsAccessKey = "accesskey";
                stream.AwsSecretKey = "accesskey";
                stream.AwsRegion    = "USWest1";
                stream.S3BucketName = "mybucket";
                break;

            case DataStreamTypes.AzureBlob:
                stream.AzureAccessKey                = "accesskey";
                stream.AzureStorageAccountName       = "accountid";
                stream.AzureBlobStorageContainerName = "blobcontainer";
                break;

            case DataStreamTypes.AzureEventHub:
                stream.AzureAccessKey          = "accesskey";
                stream.AzureStorageAccountName = "accountid";
                stream.AzureEventHubName       = "ehname";
                stream.AzureEventHubEntityPath = "path";
                break;

            case DataStreamTypes.AzureTableStorage:
                stream.AzureAccessKey          = "accesskey";
                stream.AzureStorageAccountName = "accountid";
                stream.AzureTableStorageName   = "tablestorage";
                break;

            case DataStreamTypes.AzureTableStorage_Managed:
                stream.AzureTableStorageName = "tablestorage";
                break;

            case DataStreamTypes.SQLServer:
                stream.DbName      = "mydb";
                stream.DbPassword  = "******";
                stream.DbTableName = "mytablename";
                stream.DbURL       = "www.foo.com";
                stream.DbUserName  = "******";
                break;
            }
            return(stream);
        }