mirror of
https://github.com/codex-storage/cs-codex-dist-tests.git
synced 2025-02-10 03:04:42 +00:00
debugging reward api
This commit is contained in:
parent
dd5baeda46
commit
3c210f96fc
@ -9,6 +9,8 @@ namespace CodexDiscordBotPlugin
|
|||||||
public override string AppName => "discordbot-bibliotech";
|
public override string AppName => "discordbot-bibliotech";
|
||||||
public override string Image => "thatbenbierens/codex-discordbot:initial";
|
public override string Image => "thatbenbierens/codex-discordbot:initial";
|
||||||
|
|
||||||
|
public static string RewardsPort = "bot_rewards_port";
|
||||||
|
|
||||||
protected override void Initialize(StartupConfig startupConfig)
|
protected override void Initialize(StartupConfig startupConfig)
|
||||||
{
|
{
|
||||||
var config = startupConfig.Get<DiscordBotStartupConfig>();
|
var config = startupConfig.Get<DiscordBotStartupConfig>();
|
||||||
@ -19,6 +21,7 @@ namespace CodexDiscordBotPlugin
|
|||||||
AddEnvVar("SERVERNAME", config.ServerName);
|
AddEnvVar("SERVERNAME", config.ServerName);
|
||||||
AddEnvVar("ADMINROLE", config.AdminRoleName);
|
AddEnvVar("ADMINROLE", config.AdminRoleName);
|
||||||
AddEnvVar("ADMINCHANNELNAME", config.AdminChannelName);
|
AddEnvVar("ADMINCHANNELNAME", config.AdminChannelName);
|
||||||
|
AddEnvVar("REWARDSCHANNELNAME", config.RewardChannelName);
|
||||||
AddEnvVar("KUBECONFIG", "/opt/kubeconfig.yaml");
|
AddEnvVar("KUBECONFIG", "/opt/kubeconfig.yaml");
|
||||||
AddEnvVar("KUBENAMESPACE", config.KubeNamespace);
|
AddEnvVar("KUBENAMESPACE", config.KubeNamespace);
|
||||||
|
|
||||||
@ -30,6 +33,8 @@ namespace CodexDiscordBotPlugin
|
|||||||
AddEnvVar("CODEXCONTRACTS_TOKENADDRESS", gethInfo.TokenAddress);
|
AddEnvVar("CODEXCONTRACTS_TOKENADDRESS", gethInfo.TokenAddress);
|
||||||
AddEnvVar("CODEXCONTRACTS_ABI", gethInfo.Abi);
|
AddEnvVar("CODEXCONTRACTS_ABI", gethInfo.Abi);
|
||||||
|
|
||||||
|
AddInternalPortAndVar("REWARDAPIPORT", RewardsPort);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(config.DataPath))
|
if (!string.IsNullOrEmpty(config.DataPath))
|
||||||
{
|
{
|
||||||
AddEnvVar("DATAPATH", config.DataPath);
|
AddEnvVar("DATAPATH", config.DataPath);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
public class DiscordBotStartupConfig
|
public class DiscordBotStartupConfig
|
||||||
{
|
{
|
||||||
public DiscordBotStartupConfig(string name, string token, string serverName, string adminRoleName, string adminChannelName, string kubeNamespace, DiscordBotGethInfo gethInfo)
|
public DiscordBotStartupConfig(string name, string token, string serverName, string adminRoleName, string adminChannelName, string kubeNamespace, DiscordBotGethInfo gethInfo, string rewardChannelName)
|
||||||
{
|
{
|
||||||
Name = name;
|
Name = name;
|
||||||
Token = token;
|
Token = token;
|
||||||
@ -11,6 +11,7 @@
|
|||||||
AdminChannelName = adminChannelName;
|
AdminChannelName = adminChannelName;
|
||||||
KubeNamespace = kubeNamespace;
|
KubeNamespace = kubeNamespace;
|
||||||
GethInfo = gethInfo;
|
GethInfo = gethInfo;
|
||||||
|
RewardChannelName = rewardChannelName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name { get; }
|
public string Name { get; }
|
||||||
@ -18,6 +19,7 @@
|
|||||||
public string ServerName { get; }
|
public string ServerName { get; }
|
||||||
public string AdminRoleName { get; }
|
public string AdminRoleName { get; }
|
||||||
public string AdminChannelName { get; }
|
public string AdminChannelName { get; }
|
||||||
|
public string RewardChannelName { get; }
|
||||||
public string KubeNamespace { get; }
|
public string KubeNamespace { get; }
|
||||||
public DiscordBotGethInfo GethInfo { get; }
|
public DiscordBotGethInfo GethInfo { get; }
|
||||||
public string? DataPath { get; set; }
|
public string? DataPath { get; set; }
|
||||||
@ -25,7 +27,7 @@
|
|||||||
|
|
||||||
public class RewarderBotStartupConfig
|
public class RewarderBotStartupConfig
|
||||||
{
|
{
|
||||||
public RewarderBotStartupConfig(string discordBotHost, int discordBotPort, TimeSpan interval, DateTime historyStartUtc, DiscordBotGethInfo gethInfo, string? dataPath)
|
public RewarderBotStartupConfig(string discordBotHost, int discordBotPort, string interval, DateTime historyStartUtc, DiscordBotGethInfo gethInfo, string? dataPath)
|
||||||
{
|
{
|
||||||
DiscordBotHost = discordBotHost;
|
DiscordBotHost = discordBotHost;
|
||||||
DiscordBotPort = discordBotPort;
|
DiscordBotPort = discordBotPort;
|
||||||
@ -37,7 +39,7 @@
|
|||||||
|
|
||||||
public string DiscordBotHost { get; }
|
public string DiscordBotHost { get; }
|
||||||
public int DiscordBotPort { get; }
|
public int DiscordBotPort { get; }
|
||||||
public TimeSpan Interval { get; }
|
public string Interval { get; }
|
||||||
public DateTime HistoryStartUtc { get; }
|
public DateTime HistoryStartUtc { get; }
|
||||||
public DiscordBotGethInfo GethInfo { get; }
|
public DiscordBotGethInfo GethInfo { get; }
|
||||||
public string? DataPath { get; set; }
|
public string? DataPath { get; set; }
|
||||||
|
@ -17,7 +17,7 @@ namespace CodexDiscordBotPlugin
|
|||||||
|
|
||||||
AddEnvVar("DISCORDBOTHOST", config.DiscordBotHost);
|
AddEnvVar("DISCORDBOTHOST", config.DiscordBotHost);
|
||||||
AddEnvVar("DISCORDBOTPORT", config.DiscordBotPort.ToString());
|
AddEnvVar("DISCORDBOTPORT", config.DiscordBotPort.ToString());
|
||||||
AddEnvVar("INTERVALMINUTES", config.Interval.TotalMinutes.ToString());
|
AddEnvVar("INTERVALMINUTES", config.Interval);
|
||||||
var offset = new DateTimeOffset(config.HistoryStartUtc);
|
var offset = new DateTimeOffset(config.HistoryStartUtc);
|
||||||
AddEnvVar("CHECKHISTORY", offset.ToUnixTimeSeconds().ToString());
|
AddEnvVar("CHECKHISTORY", offset.ToUnixTimeSeconds().ToString());
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
using CodexContractsPlugin;
|
using CodexContractsPlugin;
|
||||||
|
using CodexDiscordBotPlugin;
|
||||||
using CodexPlugin;
|
using CodexPlugin;
|
||||||
using DistTestCore;
|
using DistTestCore;
|
||||||
using GethPlugin;
|
using GethPlugin;
|
||||||
using MetricsPlugin;
|
|
||||||
using Nethereum.Hex.HexConvertors.Extensions;
|
using Nethereum.Hex.HexConvertors.Extensions;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using Utils;
|
using Utils;
|
||||||
@ -13,44 +13,7 @@ namespace CodexTests.BasicTests
|
|||||||
public class ExampleTests : CodexDistTest
|
public class ExampleTests : CodexDistTest
|
||||||
{
|
{
|
||||||
[Test]
|
[Test]
|
||||||
public void CodexLogExample()
|
public void BotRewardTest()
|
||||||
{
|
|
||||||
var primary = AddCodex(s => s.WithLogLevel(CodexLogLevel.Trace, new CodexLogCustomTopics(CodexLogLevel.Warn, CodexLogLevel.Warn)));
|
|
||||||
|
|
||||||
var cid = primary.UploadFile(GenerateTestFile(5.MB()));
|
|
||||||
|
|
||||||
var content = primary.LocalFiles();
|
|
||||||
CollectionAssert.Contains(content.Select(c => c.Cid), cid);
|
|
||||||
|
|
||||||
var log = Ci.DownloadLog(primary);
|
|
||||||
|
|
||||||
log.AssertLogContains("Uploaded file");
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void TwoMetricsExample()
|
|
||||||
{
|
|
||||||
var group = AddCodex(2, s => s.EnableMetrics());
|
|
||||||
var group2 = AddCodex(2, s => s.EnableMetrics());
|
|
||||||
|
|
||||||
var primary = group[0];
|
|
||||||
var secondary = group[1];
|
|
||||||
var primary2 = group2[0];
|
|
||||||
var secondary2 = group2[1];
|
|
||||||
|
|
||||||
var metrics = Ci.GetMetricsFor(primary, primary2);
|
|
||||||
|
|
||||||
primary.ConnectToPeer(secondary);
|
|
||||||
primary2.ConnectToPeer(secondary2);
|
|
||||||
|
|
||||||
Thread.Sleep(TimeSpan.FromMinutes(2));
|
|
||||||
|
|
||||||
metrics[0].AssertThat("libp2p_peers", Is.EqualTo(1));
|
|
||||||
metrics[1].AssertThat("libp2p_peers", Is.EqualTo(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void MarketplaceExample()
|
|
||||||
{
|
{
|
||||||
var sellerInitialBalance = 234.TestTokens();
|
var sellerInitialBalance = 234.TestTokens();
|
||||||
var buyerInitialBalance = 1000.TestTokens();
|
var buyerInitialBalance = 1000.TestTokens();
|
||||||
@ -80,6 +43,42 @@ namespace CodexTests.BasicTests
|
|||||||
|
|
||||||
AssertBalance(contracts, buyer, Is.EqualTo(buyerInitialBalance));
|
AssertBalance(contracts, buyer, Is.EqualTo(buyerInitialBalance));
|
||||||
|
|
||||||
|
// start bot and rewarder
|
||||||
|
var gethInfo = new DiscordBotGethInfo(
|
||||||
|
host: geth.Container.GetInternalAddress(GethContainerRecipe.HttpPortTag).Host,
|
||||||
|
port: geth.Container.GetInternalAddress(GethContainerRecipe.HttpPortTag).Port,
|
||||||
|
privKey: geth.StartResult.Account.PrivateKey,
|
||||||
|
marketplaceAddress: contracts.Deployment.MarketplaceAddress,
|
||||||
|
tokenAddress: contracts.Deployment.TokenAddress,
|
||||||
|
abi: contracts.Deployment.Abi
|
||||||
|
);
|
||||||
|
var bot = Ci.DeployCodexDiscordBot(new DiscordBotStartupConfig(
|
||||||
|
name: "bot",
|
||||||
|
token: "MTE2NDEyNzk3MDU4NDE3NDU5Mw.GTpoV6.aDR7zxMNf7vDgMjKASJBQs-RtNP_lYJEY-OglI",
|
||||||
|
serverName: "ThatBen's server",
|
||||||
|
adminRoleName: "bottest-admins",
|
||||||
|
adminChannelName: "admin-channel",
|
||||||
|
rewardChannelName: "rewards-channel",
|
||||||
|
kubeNamespace: "notneeded",
|
||||||
|
gethInfo: gethInfo
|
||||||
|
));
|
||||||
|
var botContainer = bot.Containers.Single();
|
||||||
|
Ci.DeployRewarderBot(new RewarderBotStartupConfig(
|
||||||
|
//discordBotHost: "http://" + botContainer.GetAddress(GetTestLog(), DiscordBotContainerRecipe.RewardsPort).Host,
|
||||||
|
//discordBotPort: botContainer.GetAddress(GetTestLog(), DiscordBotContainerRecipe.RewardsPort).Port,
|
||||||
|
discordBotHost: botContainer.GetInternalAddress(DiscordBotContainerRecipe.RewardsPort).Host,
|
||||||
|
discordBotPort: botContainer.GetInternalAddress(DiscordBotContainerRecipe.RewardsPort).Port,
|
||||||
|
interval: "60",
|
||||||
|
historyStartUtc: DateTime.UtcNow.AddHours(-1),
|
||||||
|
gethInfo: gethInfo,
|
||||||
|
dataPath: null
|
||||||
|
));
|
||||||
|
|
||||||
|
var sellerAddress = seller.EthAddress;
|
||||||
|
var buyerAddress = buyer.EthAddress;
|
||||||
|
|
||||||
|
var i = 0;
|
||||||
|
|
||||||
var contentId = buyer.UploadFile(testFile);
|
var contentId = buyer.UploadFile(testFile);
|
||||||
var purchaseContract = buyer.Marketplace.RequestStorage(contentId,
|
var purchaseContract = buyer.Marketplace.RequestStorage(contentId,
|
||||||
pricePerSlotPerSecond: 2.TestTokens(),
|
pricePerSlotPerSecond: 2.TestTokens(),
|
||||||
@ -126,21 +125,5 @@ namespace CodexTests.BasicTests
|
|||||||
//CheckLogForErrors(seller, buyer);
|
//CheckLogForErrors(seller, buyer);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void GethBootstrapTest()
|
|
||||||
{
|
|
||||||
var boot = Ci.StartGethNode(s => s.WithName("boot").IsMiner());
|
|
||||||
var disconnected = Ci.StartGethNode(s => s.WithName("disconnected"));
|
|
||||||
var follow = Ci.StartGethNode(s => s.WithBootstrapNode(boot).WithName("follow"));
|
|
||||||
|
|
||||||
Thread.Sleep(12000);
|
|
||||||
|
|
||||||
var bootN = boot.GetSyncedBlockNumber();
|
|
||||||
var discN = disconnected.GetSyncedBlockNumber();
|
|
||||||
var followN = follow.GetSyncedBlockNumber();
|
|
||||||
|
|
||||||
Assert.That(bootN, Is.EqualTo(followN));
|
|
||||||
Assert.That(discN, Is.LessThan(bootN));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\ProjectPlugins\CodexContractsPlugin\CodexContractsPlugin.csproj" />
|
<ProjectReference Include="..\..\ProjectPlugins\CodexContractsPlugin\CodexContractsPlugin.csproj" />
|
||||||
|
<ProjectReference Include="..\..\ProjectPlugins\CodexDiscordBotPlugin\CodexDiscordBotPlugin.csproj" />
|
||||||
<ProjectReference Include="..\..\ProjectPlugins\CodexPlugin\CodexPlugin.csproj" />
|
<ProjectReference Include="..\..\ProjectPlugins\CodexPlugin\CodexPlugin.csproj" />
|
||||||
<ProjectReference Include="..\..\ProjectPlugins\GethPlugin\GethPlugin.csproj" />
|
<ProjectReference Include="..\..\ProjectPlugins\GethPlugin\GethPlugin.csproj" />
|
||||||
<ProjectReference Include="..\..\ProjectPlugins\MetricsPlugin\MetricsPlugin.csproj" />
|
<ProjectReference Include="..\..\ProjectPlugins\MetricsPlugin\MetricsPlugin.csproj" />
|
||||||
|
@ -58,9 +58,6 @@ namespace BiblioTech.Rewards
|
|||||||
{
|
{
|
||||||
Program.Log.Error("Exception during HTTP handler: " + ex);
|
Program.Log.Error("Exception during HTTP handler: " + ex);
|
||||||
}
|
}
|
||||||
// Whatever happens, everything's always OK.
|
|
||||||
context.Response.StatusCode = 200;
|
|
||||||
context.Response.OutputStream.Close();
|
|
||||||
}, nameof(HandleConnection));
|
}, nameof(HandleConnection));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,6 +113,9 @@ namespace CodexNetDeployer
|
|||||||
[Uniform("dbot-adminchannelname", "dbotacn", "DBOTADMINCHANNELNAME", false, "Required if discord-bot is true. Name of the Discord channel in which admin commands are allowed.")]
|
[Uniform("dbot-adminchannelname", "dbotacn", "DBOTADMINCHANNELNAME", false, "Required if discord-bot is true. Name of the Discord channel in which admin commands are allowed.")]
|
||||||
public string DiscordBotAdminChannelName { get; set; } = string.Empty;
|
public string DiscordBotAdminChannelName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[Uniform("dbot-rewardchannelname", "dbotrcn", "DBOTREWARDCHANNELNAME", false, "Required if discord-bot is true. Name of the Discord channel in which reward updates are posted.")]
|
||||||
|
public string DiscordBotRewardChannelName { get; set; } = string.Empty;
|
||||||
|
|
||||||
[Uniform("dbot-datapath", "dbotdp", "DBOTDATAPATH", false, "Optional. Path in container where bot will save all data.")]
|
[Uniform("dbot-datapath", "dbotdp", "DBOTDATAPATH", false, "Optional. Path in container where bot will save all data.")]
|
||||||
public string DiscordBotDataPath { get; set; } = string.Empty;
|
public string DiscordBotDataPath { get; set; } = string.Empty;
|
||||||
|
|
||||||
@ -159,6 +162,7 @@ namespace CodexNetDeployer
|
|||||||
StringIsSet(nameof(DiscordBotServerName), DiscordBotServerName, errors);
|
StringIsSet(nameof(DiscordBotServerName), DiscordBotServerName, errors);
|
||||||
StringIsSet(nameof(DiscordBotAdminRoleName), DiscordBotAdminRoleName, errors);
|
StringIsSet(nameof(DiscordBotAdminRoleName), DiscordBotAdminRoleName, errors);
|
||||||
StringIsSet(nameof(DiscordBotAdminChannelName), DiscordBotAdminChannelName, errors);
|
StringIsSet(nameof(DiscordBotAdminChannelName), DiscordBotAdminChannelName, errors);
|
||||||
|
StringIsSet(nameof(DiscordBotRewardChannelName), DiscordBotRewardChannelName, errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
return errors;
|
return errors;
|
||||||
|
@ -142,7 +142,8 @@ namespace CodexNetDeployer
|
|||||||
adminRoleName: config.DiscordBotAdminRoleName,
|
adminRoleName: config.DiscordBotAdminRoleName,
|
||||||
adminChannelName: config.DiscordBotAdminChannelName,
|
adminChannelName: config.DiscordBotAdminChannelName,
|
||||||
kubeNamespace: config.KubeNamespace,
|
kubeNamespace: config.KubeNamespace,
|
||||||
gethInfo: info)
|
gethInfo: info,
|
||||||
|
rewardChannelName: config.DiscordBotRewardChannelName)
|
||||||
{
|
{
|
||||||
DataPath = config.DiscordBotDataPath
|
DataPath = config.DiscordBotDataPath
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user