private static EventSource <string> RunInitialPositionTest(string id, InitialPositionEnum expectedInitialPosition) { var config = TestUtility.GetConfig("Sources", id); var source = new MockEventSource <string>(new PluginContext(config, null, null)); EventSource <string> .LoadCommonSourceConfig(config, source); Assert.Equal(expectedInitialPosition, source.InitialPosition); return(source); }
/// <summary> /// A helper method to load the common config parameters. /// </summary> /// <param name="config">The config section for the source</param> /// <param name="source">The source to be configured</param> public static void LoadCommonSourceConfig(IConfiguration config, EventSource <T> source) { InitialPositionEnum initialPosition = InitialPositionEnum.EOS; string initialPositionConfig = config["InitialPosition"]; if (!string.IsNullOrEmpty(initialPositionConfig)) { switch (initialPositionConfig.ToLower()) { case "eos": initialPosition = InitialPositionEnum.EOS; break; case "0": initialPosition = InitialPositionEnum.BOS; break; case "bookmark": initialPosition = InitialPositionEnum.Bookmark; break; case "timestamp": initialPosition = InitialPositionEnum.Timestamp; string initialPositionTimeStamp = config["InitialPositionTimestamp"]; if (string.IsNullOrWhiteSpace(initialPositionTimeStamp)) { throw new Exception("Missing initial position timestamp."); } try { source.InitialPositionTimestamp = DateTime.Parse(initialPositionTimeStamp, null, System.Globalization.DateTimeStyles.RoundtripKind); } catch { throw new Exception($"Invalid InitialPositionTimestamp {initialPositionTimeStamp}"); } break; default: throw new Exception($"Invalid InitialPosition {initialPositionConfig}"); } } source.InitialPosition = initialPosition; }