private void RecordCustom(EventProcessor ep, TestCustomEventProperties e)
 {
     ep.RecordCustomEvent(new CustomEvent
     {
         Timestamp   = e.Timestamp,
         User        = e.User,
         EventKey    = e.Key,
         Data        = e.Data,
         MetricValue = e.MetricValue
     });
 }
 private void RecordEval(EventProcessor ep, TestFlagProperties f, TestEvalProperties e)
 {
     ep.RecordEvaluationEvent(new EvaluationEvent
     {
         Timestamp            = e.Timestamp,
         User                 = e.User,
         FlagKey              = f.Key,
         FlagVersion          = f.Version,
         Variation            = e.Variation,
         Value                = e.Value,
         Default              = e.DefaultValue,
         Reason               = e.Reason,
         PrereqOf             = e.PrereqOf,
         TrackEvents          = f.TrackEvents,
         DebugEventsUntilDate = f.DebugEventsUntilDate
     });
 }
 private void FlushAndWait(EventProcessor ep)
 {
     ep.Flush();
     ep.WaitUntilInactive();
 }
 private void RecordIdentify(EventProcessor ep, UnixMillisecondTime time, User user) =>
 ep.RecordIdentifyEvent(new IdentifyEvent {
     Timestamp = time, User = user
 });