public ValuesController( IDataRouter router, ClusterClient clusterClient, NodeStateService node, IStateMachine <TestState> stateMachine) { _clusterClient = clusterClient; _router = (TestDataRouter)router; _node = node; _stateMachine = stateMachine; }
/* public static RaftService<TestState> GetTestConsensusCoreNode() * { * var moqClusterOptions = new Mock<IOptions<ClusterOptions>>(); * moqClusterOptions.Setup(mqo => mqo.Value).Returns(new ClusterOptions() * { * NodeUrls = "localhost:5022", * TestMode = true, * NumberOfShards = 1, * DataTransferTimeoutMs = 1000, * ElectionTimeoutMs = 1000, * LatencyToleranceMs = 1000, * MinimumNodes = 1 * }); * * var moqNodeOptions = new Mock<IOptions<NodeOptions>>(); * moqNodeOptions.Setup(mqo => mqo.Value).Returns(new NodeOptions() { }); * * var serviceProvider = new ServiceCollection() * .AddLogging() * .BuildServiceProvider(); * * var factory = serviceProvider.GetService<ILoggerFactory>(); * * var logger = factory.CreateLogger<RaftService<TestState>>(); * * NodeInMemoryRepository<TestState> inMemoryRepository = new NodeInMemoryRepository<TestState>(); * var NodeStorage = new NodeStorage<TestState>(inMemoryRepository) { }; * var _dataRouter = new TestDataRouter(); * var _stateMachine = new StateMachine<TestState>(); * var _connector = new ClusterClient(TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1000)); * * return new ConsensusCoreNode<TestState>(moqClusterOptions.Object, * moqNodeOptions.Object, * logger, * _stateMachine, * inMemoryRepository, * _connector, * _dataRouter, * new ShardManager<TestState, IShardRepository>(_stateMachine, * factory.CreateLogger<ShardManager<TestState, IShardRepository>>(), * _connector, * _dataRouter, * moqClusterOptions.Object, * inMemoryRepository), * NodeStorage * ); * }*/ public static DataService <TestState> GetTestShardManager() { var serviceProvider = new ServiceCollection() .AddLogging() .BuildServiceProvider(); var _stateMachine = new StateMachine <TestState>() { }; var factory = serviceProvider.GetService <ILoggerFactory>(); NodeInMemoryRepository <TestState> inMemoryRepository = new NodeInMemoryRepository <TestState>(); var _dataRouter = new TestDataRouter(); var moqClusterOptions = new Mock <IOptions <ClusterOptions> >(); var moqNodeOptions = new Mock <IOptions <NodeOptions> >(); moqNodeOptions.Setup(mqo => mqo.Value).Returns(new NodeOptions() { }); Guid nodeStorageId = Guid.NewGuid(); var NodeStorage = new NodeStorage <TestState>(factory.CreateLogger <NodeStorage <TestState> >(), inMemoryRepository) { Id = nodeStorageId }; var nodeStateService = new NodeStateService() { Id = nodeStorageId }; var services = new ServiceCollection(); var provider = services.BuildServiceProvider(); var _connector = new ClusterClient(new ClusterConnectionPool <TestState>(_stateMachine, TimeSpan.FromMilliseconds(10000), TimeSpan.FromMilliseconds(1000)), provider, nodeStateService); _stateMachine.ApplyLogsToStateMachine(new List <ConsensusCore.Domain.Models.LogEntry>() { new ConsensusCore.Domain.Models.LogEntry() { Commands = new List <BaseCommand>() { new CreateIndex() { Type = "number", Shards = new List <ShardAllocationMetadata>() { new ShardAllocationMetadata() { Id = DefaultShardId, InsyncAllocations = new HashSet <Guid>() { nodeStorageId }, PrimaryAllocation = nodeStorageId, Type = "number", StaleAllocations = new HashSet <Guid>() } } } } } }); moqClusterOptions.Setup(mqo => mqo.Value).Returns(new ClusterOptions() { NodeUrls = "localhost:5022", TestMode = true, NumberOfShards = 1, DataTransferTimeoutMs = 1000, ElectionTimeoutMs = 1000, LatencyToleranceMs = 1000, MinimumNodes = 1 }); var manager = new DataService <TestState>( factory, inMemoryRepository, _dataRouter, _stateMachine, nodeStateService, _connector, moqClusterOptions.Object, inMemoryRepository, moqNodeOptions.Object ); return(manager); }