cs-codex-dist-tests/CodexPlugin/Marketplace/CodexContractsStarter.cs

104 lines
4.0 KiB
C#
Raw Normal View History

//using KubernetesWorkflow;
//using Utils;
//namespace DistTestCore.Marketplace
//{
// public class CodexContractsStarter : BaseStarter
// {
// public CodexContractsStarter(TestLifecycle lifecycle)
// : base(lifecycle)
// {
// }
// public MarketplaceInfo Start(GethBootstrapNodeInfo bootstrapNode)
// {
// LogStart("Deploying Codex Marketplace...");
// var workflow = lifecycle.WorkflowCreator.CreateWorkflow();
// var startupConfig = CreateStartupConfig(bootstrapNode.RunningContainers.Containers[0]);
// var containers = workflow.Start(1, Location.Unspecified, new CodexContractsContainerRecipe(), startupConfig);
// if (containers.Containers.Length != 1) throw new InvalidOperationException("Expected 1 Codex contracts container to be created. Test infra failure.");
// var container = containers.Containers[0];
// WaitUntil(() =>
// {
// var logHandler = new ContractsReadyLogHandler(Debug);
// workflow.DownloadContainerLog(container, logHandler, null);
// return logHandler.Found;
// });
// Log("Contracts deployed. Extracting addresses...");
// var extractor = new ContainerInfoExtractor(lifecycle.Log, workflow, container);
// var marketplaceAddress = extractor.ExtractMarketplaceAddress();
// var abi = extractor.ExtractMarketplaceAbi();
// var interaction = bootstrapNode.StartInteraction(lifecycle);
// var tokenAddress = interaction.GetTokenAddress(marketplaceAddress);
// LogEnd("Extract completed. Marketplace deployed.");
// return new MarketplaceInfo(marketplaceAddress, abi, tokenAddress);
// }
// private void WaitUntil(Func<bool> predicate)
// {
// Time.WaitUntil(predicate, TimeSpan.FromMinutes(3), TimeSpan.FromSeconds(2));
// }
// private StartupConfig CreateStartupConfig(RunningContainer bootstrapContainer)
// {
// var startupConfig = new StartupConfig();
// var contractsConfig = new CodexContractsContainerConfig(bootstrapContainer.Pod.PodInfo.Ip, bootstrapContainer.Recipe.GetPortByTag(GethContainerRecipe.HttpPortTag));
// startupConfig.Add(contractsConfig);
// return startupConfig;
// }
// }
// public class MarketplaceInfo
// {
// public MarketplaceInfo(string address, string abi, string tokenAddress)
// {
// Address = address;
// Abi = abi;
// TokenAddress = tokenAddress;
// }
// public string Address { get; }
// public string Abi { get; }
// public string TokenAddress { get; }
// }
// public class ContractsReadyLogHandler : LogHandler
// {
// // Log should contain 'Compiled 15 Solidity files successfully' at some point.
// private const string RequiredCompiledString = "Solidity files successfully";
// // When script is done, it prints the ready-string.
// private const string ReadyString = "Done! Sleeping indefinitely...";
// private readonly Action<string> debug;
// public ContractsReadyLogHandler(Action<string> debug)
// {
// this.debug = debug;
// debug($"Looking for '{RequiredCompiledString}' and '{ReadyString}' in container logs...");
// }
// public bool SeenCompileString { get; private set; }
// public bool Found { get; private set; }
// protected override void ProcessLine(string line)
// {
// debug(line);
// if (line.Contains(RequiredCompiledString)) SeenCompileString = true;
// if (line.Contains(ReadyString))
// {
// if (!SeenCompileString) throw new Exception("CodexContracts deployment failed. " +
// "Solidity files not compiled before process exited.");
// Found = true;
// }
// }
// }
//}