Ejemplo n.º 1
0
        public static string GetAssetBundleDirectory(CompressType type)
        {
            var builder =
                new StringBuilder()
                .Append(Application.streamingAssetsPath)
                .Append("/")
                .Append(type.ToString())
                .Append("/");

            return(builder.ToString());
        }
Ejemplo n.º 2
0
        public async Task Normal(CompressType compressType)
        {
            var random        = new Random();
            var minionLocator = new TestMinionLocator();

            using var host = QuickSetupTestHelper.BuildHost(
                      DatabaseType.SQLite,
                      RelationLocatorStrategy.SharedTable,
                      AppsettingsFilenames.Concat(new[]
                                                  { $"configs/rabbitmq/appsettings.{compressType.ToString("G").ToLower()}.json" }),
                      builder =>
            {
                builder.RegisterInstance(minionLocator)
                .As <IMinionLocator>()
                .SingleInstance();
            }, builder =>
                      builder.UseRabbitMQ(rabbitmq => rabbitmq.AsEventCenter())
                      );

            var container         = host.Services;
            var subscriberManager = container.GetRequiredService <IMQSubscriberManager>();
            await subscriberManager.StartAsync();

            var claptrapFactory = (ClaptrapFactory)container.GetRequiredService <IClaptrapFactory>();
            var id1             = new ClaptrapIdentity("1", Codes.Account);

            await using var scope = claptrapFactory.BuildClaptrapLifetimeScope(id1);
            var eventCenter = scope.Resolve <IEventCenter>();
            var eventData   = new AccountBalanceChangeEvent
            {
                Diff = random.Next(0, 1000)
            };
            var evt = new DataEvent(id1, Codes.AccountBalanceChangeEvent, eventData)
            {
                Version = 1
            };
            await eventCenter.SendToMinionsAsync(id1, evt);

            await Task.Delay(TimeSpan.FromSeconds(3));

            minionLocator.Queue.Count.Should().Be(2);
            var dic               = minionLocator.Queue.ToDictionary(x => x.Identity);
            var balanceMinionId   = new ClaptrapIdentity(id1.Id, Codes.AccountBalanceMinion);
            var balanceMinionItem = dic[balanceMinionId];

            AssertEvent(balanceMinionId, balanceMinionItem);

            var balanceHistoryMinionId   = new ClaptrapIdentity(id1.Id, Codes.AccountBalanceMinion);
            var balanceHistoryMinionItem = dic[balanceHistoryMinionId];

            AssertEvent(balanceHistoryMinionId, balanceHistoryMinionItem);

            await subscriberManager.CloseAsync();

            await container.GetRequiredService <IMQSenderManager>().CloseAsync();

            await host.StopAsync();

            void AssertEvent(ClaptrapIdentity minionId, ReceivedItem item)
            {
                var(id, e) = item;
                id.Should().BeEquivalentTo(minionId);
                e.Version.Should().Be(evt.Version);
                e.EventTypeCode.Should().Be(evt.EventTypeCode);
                e.Data.Should().BeOfType <AccountBalanceChangeEvent>();
                var data = (AccountBalanceChangeEvent)e.Data;

                data.Diff.Should().Be(eventData.Diff);
            }
        }