Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
            }
        }
Exemple #4
0
        /// <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)
                       ));
        }