/// <summary> /// Publish an event on the bus. /// </summary> /// <param name="resourceEvent"> /// The job store event. /// </param> /// <param name="subscriber"> /// An <see cref="IActorRef"/> representing the actor to subscribe. /// </param> protected override void Publish(ResourceEventV1 <TResource> resourceEvent, IActorRef subscriber) { if (resourceEvent == null) { throw new ArgumentNullException(nameof(resourceEvent)); } subscriber.Tell(resourceEvent); }
/// <summary> /// Get a classifier for the specified <see cref="JobStore"/> event. /// </summary> /// <param name="resourceEvent"> /// The <typeparam name="TResource"/> event. /// </param> /// <returns> /// The event classifier. /// </returns> protected sealed override TFilter GetClassifier(ResourceEventV1 <TResource> resourceEvent) { if (resourceEvent == null) { throw new ArgumentNullException(nameof(resourceEvent)); } return(CreateExactMatchFilter( GetMetadata(resourceEvent.Resource) )); }
public void Can_Deserialize_ResourceEventV1(Type resourceType, ResourceEventType expectedEventType) { JsonSerializerSettings serializerSettings = KubeResourceClient.SerializerSettings; serializerSettings.Formatting = Formatting.Indented; JsonSerializer serializer = JsonSerializer.Create(serializerSettings); ResourceEventV1 <KubeResourceV1> expectedResourceEvent = new ResourceEventV1 <KubeResourceV1> { EventType = expectedEventType, Resource = resourceType != null ? (KubeResourceV1)Activator.CreateInstance(resourceType) : null }; StringBuilder buffer = new StringBuilder(); using (StringWriter bufferWriter = new StringWriter(buffer)) using (JsonWriter jsonWriter = new JsonTextWriter(bufferWriter)) { serializer.Serialize(jsonWriter, expectedResourceEvent); jsonWriter.Flush(); } Log.LogInformation("Serialised event JSON:\n{EventJson:l}", buffer.ToString()); serializerSettings.Converters.Add( new ResourceEventV1Converter(typeof(KubeResourceV1).Assembly) ); serializer = JsonSerializer.Create(serializerSettings); ResourceEventV1 <KubeResourceV1> actualResourceEvent; using (StringReader bufferReader = new StringReader(buffer.ToString())) using (JsonReader jsonReader = new JsonTextReader(bufferReader)) { actualResourceEvent = serializer.Deserialize <ResourceEventV1 <KubeResourceV1> >(jsonReader); } Assert.NotNull(actualResourceEvent); Assert.Equal(expectedResourceEvent.EventType, actualResourceEvent.EventType); if (expectedResourceEvent.Resource != null) { Assert.NotNull(actualResourceEvent.Resource); Assert.IsType(expectedResourceEvent.Resource.GetType(), actualResourceEvent.Resource); } else { Assert.Null(actualResourceEvent.Resource); } }
/// <summary> /// Determine whether the specified <see cref="JobStore"/> event matches the specified clasifier. /// </summary> /// <param name="resourceEvent"> /// The <see cref="JobStore"/> event. /// </param> /// <param name="resourceFilter"> /// The event classifier. /// </param> /// <returns> /// <c>true</c>, if the event matches the filter; otherwise, <c>false</c>. /// </returns> protected override bool Classify(ResourceEventV1 <TResource> resourceEvent, TFilter resourceFilter) { if (resourceEvent == null) { throw new ArgumentNullException(nameof(resourceEvent)); } if (resourceFilter == null) { throw new ArgumentNullException(nameof(resourceFilter)); } return(resourceFilter.IsMatch( GetMetadata(resourceEvent.Resource) )); }