private void validate(JasperRuntime runtime, SubscriptionsInput input) { var files = new FileSystem(); var dict = new Dictionary <string, ServiceCapabilities>(); files.FindFiles(input.DirectoryFlag, FileSet.Shallow("*.capabilities.json")) .Each(file => { try { Console.WriteLine("Reading " + file); var capabilities = ServiceCapabilities.ReadFromFile(file); if (dict.ContainsKey(capabilities.ServiceName)) { ConsoleWriter.Write(ConsoleColor.Yellow, $"Duplicate service name '{capabilities.ServiceName}' from file {file}"); } else { dict.Add(capabilities.ServiceName, capabilities); } } catch (Exception e) { ConsoleWriter.Write(ConsoleColor.Yellow, "Failed to read capabilities from file " + file); Console.WriteLine(e); } }); if (dict.ContainsKey(runtime.ServiceName)) { dict[runtime.ServiceName] = runtime.Capabilities; } else { dict.Add(runtime.ServiceName, runtime.Capabilities); } var messaging = new MessagingGraph(dict.Values.ToArray()); Console.WriteLine(messaging.ToJson()); if (input.FileFlag.IsNotEmpty()) { Console.WriteLine("Writing the messaging graph to " + input.FileFlag); messaging.WriteToFile(input.FileFlag); } if (messaging.HasAnyErrors()) { ConsoleWriter.Write(ConsoleColor.Yellow, "Messaging errors detected!"); if (!input.IgnoreFailuresFlag) { throw new Exception("Validation failures detected."); } } else { ConsoleWriter.Write(ConsoleColor.Green, "All messages have matching, valid publishers and subscribers"); } }
public override void SetUp() { _graph = Context.State.Retrieve <MessagingGraph>(); }