Esempio n. 1
0
        public static ChaosEvent FromNativeEvent(NativeTypes.FABRIC_CHAOS_EVENT nativeEvent)
        {
            switch (nativeEvent.Kind)
            {
            case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_STARTED:
                return(StartedEvent.FromNative(nativeEvent.Value));

            case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_EXECUTING_FAULTS:
                return(ExecutingFaultsEvent.FromNative(nativeEvent.Value));

            case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_STOPPED:
                return(StoppedEvent.FromNative(nativeEvent.Value));

            case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_TEST_ERROR:
                return(TestErrorEvent.FromNative(nativeEvent.Value));

            case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_VALIDATION_FAILED:
                return(ValidationFailedEvent.FromNative(nativeEvent.Value));

            case NativeTypes.FABRIC_CHAOS_EVENT_KIND.FABRIC_CHAOS_EVENT_KIND_WAITING:
                return(WaitingEvent.FromNative(nativeEvent.Value));

            default:
                return(null);
            }
        }
Esempio n. 2
0
        private static IntPtr ToNativeEvents(PinCollection pin, List <ChaosEvent> history)
        {
            if (history == default(List <ChaosEvent>))
            {
                return(IntPtr.Zero);
            }

            var eventArray = new NativeTypes.FABRIC_CHAOS_EVENT[history.Count];

            for (int i = 0; i < history.Count; ++i)
            {
                eventArray[i].Value = history[i].ToNative(pin);
                eventArray[i].Kind  = ChaosUtility.GetNativeEventType(history[i]);
            }

            var nativeEvents = new NativeTypes.FABRIC_CHAOS_EVENT_LIST
            {
                Count = (uint)eventArray.Length,
                Items = pin.AddBlittable(eventArray)
            };

            return(pin.AddBlittable(nativeEvents));
        }