Skip to content

Commit e1b9cd5

Browse files
authored
Fix hourly watcher scheduler serialisation (#5888)
1 parent bb08ffd commit e1b9cd5

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

src/Nest/XPack/Watcher/Schedule/ScheduleContainer.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,12 @@ public void Serialize(ref JsonWriter writer, IScheduleContainer value, IJsonForm
227227
var formatter = formatterResolver.GetFormatter<CronExpression>();
228228
formatter.Serialize(ref writer, value.Cron, formatterResolver);
229229
}
230+
else if (value.Hourly is not null)
231+
{
232+
writer.WritePropertyName(Parser.Hourly);
233+
var formatter = formatterResolver.GetFormatter<IHourlySchedule>();
234+
formatter.Serialize(ref writer, value.Hourly, formatterResolver);
235+
}
230236
else if (value.Daily is not null)
231237
{
232238
writer.WritePropertyName(Parser.Daily);

tests/Tests/XPack/Watcher/WatcherScheduleCoordinatedTests.cs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,66 @@ public class WatcherScheduleCoordinatedTests : CoordinatedIntegrationTestBase<Wa
1919
private const string CreateCronExpressionScheduleWatcher = nameof(CreateCronExpressionScheduleWatcher);
2020
private const string CreateCronExpressionsScheduleWatcher = nameof(CreateCronExpressionsScheduleWatcher);
2121
private const string CreateDailyScheduleWatcher = nameof(CreateDailyScheduleWatcher);
22+
private const string CreateHourlyScheduleWatcher = nameof(CreateHourlyScheduleWatcher);
2223
private const string CreateMonthlyScheduleWatcher = nameof(CreateMonthlyScheduleWatcher);
2324
private const string CreateWeeklyScheduleWatcher = nameof(CreateWeeklyScheduleWatcher);
2425
private const string CreateYearlyScheduleWatcher = nameof(CreateYearlyScheduleWatcher);
2526
private const string DeleteCronExpressionScheduleWatcher = nameof(DeleteCronExpressionScheduleWatcher);
2627
private const string DeleteCronExpressionsScheduleWatcher = nameof(DeleteCronExpressionsScheduleWatcher);
2728
private const string DeleteDailyScheduleWatcher = nameof(DeleteDailyScheduleWatcher);
29+
private const string DeleteHourlyScheduleWatcher = nameof(DeleteHourlyScheduleWatcher);
2830
private const string DeleteMonthlyScheduleWatcher = nameof(DeleteMonthlyScheduleWatcher);
2931
private const string DeleteWeeklyScheduleWatcher = nameof(DeleteWeeklyScheduleWatcher);
3032
private const string DeleteYearlyScheduleWatcher = nameof(DeleteYearlyScheduleWatcher);
3133
private const string GetCronExpressionScheduleWatcher = nameof(GetCronExpressionScheduleWatcher);
3234
private const string GetCronExpressionsScheduleWatcher = nameof(GetCronExpressionsScheduleWatcher);
3335
private const string GetDailyScheduleWatcher = nameof(GetDailyScheduleWatcher);
36+
private const string GetHourlyScheduleWatcher = nameof(GetHourlyScheduleWatcher);
3437
private const string GetMonthlyScheduleWatcher = nameof(GetMonthlyScheduleWatcher);
3538
private const string GetWeeklyScheduleWatcher = nameof(GetWeeklyScheduleWatcher);
3639
private const string GetYearlyScheduleWatcher = nameof(GetYearlyScheduleWatcher);
3740

3841
public WatcherScheduleCoordinatedTests(WatcherCluster cluster, EndpointUsage usage) : base(new CoordinatedUsage(cluster, usage)
3942
{
43+
{
44+
CreateHourlyScheduleWatcher, u =>
45+
u.Calls<PutWatchDescriptor, PutWatchRequest, IPutWatchRequest, PutWatchResponse>(
46+
v => new PutWatchRequest($"hourly-{v}")
47+
{
48+
Trigger = new ScheduleContainer
49+
{
50+
Hourly = new HourlySchedule { Minute = new []{ 0, 30 }}
51+
}
52+
},
53+
(v, d) => d.Trigger(t => t.Schedule(s => s.Hourly(h => h.Minute(0, 30)))),
54+
(v, c, f) => c.Watcher.Put($"hourly-{v}", f),
55+
(v, c, f) => c.Watcher.PutAsync($"hourly-{v}", f),
56+
(v, c, r) => c.Watcher.Put(r),
57+
(v, c, r) => c.Watcher.PutAsync(r)
58+
)
59+
},
60+
{
61+
GetHourlyScheduleWatcher, u =>
62+
u.Calls<GetWatchDescriptor, GetWatchRequest, IGetWatchRequest, GetWatchResponse>(
63+
v => new GetWatchRequest($"hourly-{v}"),
64+
(v, d) => d,
65+
(v, c, f) => c.Watcher.Get($"hourly-{v}", f),
66+
(v, c, f) => c.Watcher.GetAsync($"hourly-{v}", f),
67+
(v, c, r) => c.Watcher.Get(r),
68+
(v, c, r) => c.Watcher.GetAsync(r)
69+
)
70+
},
71+
{
72+
DeleteHourlyScheduleWatcher, u =>
73+
u.Calls<DeleteWatchDescriptor, DeleteWatchRequest, IDeleteWatchRequest, DeleteWatchResponse>(
74+
v => new DeleteWatchRequest($"hourly-{v}"),
75+
(v, d) => d,
76+
(v, c, f) => c.Watcher.Delete($"hourly-{v}", f),
77+
(v, c, f) => c.Watcher.DeleteAsync($"hourly-{v}", f),
78+
(v, c, r) => c.Watcher.Delete(r),
79+
(v, c, r) => c.Watcher.DeleteAsync(r)
80+
)
81+
},
4082
{
4183
CreateDailyScheduleWatcher, u =>
4284
u.Calls<PutWatchDescriptor, PutWatchRequest, IPutWatchRequest, PutWatchResponse>(
@@ -289,6 +331,20 @@ public WatcherScheduleCoordinatedTests(WatcherCluster cluster, EndpointUsage usa
289331
},
290332
}) { }
291333

334+
[I] public async Task GetHourlyScheduleWatcherResponse() => await Assert<GetWatchResponse>(GetHourlyScheduleWatcher, (v, r) =>
335+
{
336+
r.ShouldBeValid();
337+
r.Id.Should().Be($"hourly-{v}");
338+
r.Found.Should().BeTrue();
339+
340+
var container = r.Watch.Trigger.Should()
341+
.BeAssignableTo<ITriggerContainer>().Subject;
342+
343+
container.Schedule.Hourly.Minute.Should().HaveCount(2);
344+
container.Schedule.Hourly.Minute.First().Should().Be(0);
345+
container.Schedule.Hourly.Minute.Last().Should().Be(30);
346+
});
347+
292348
[I] public async Task GetDailyScheduleWatcherResponse() => await Assert<GetWatchResponse>(GetDailyScheduleWatcher, (v, r) =>
293349
{
294350
r.ShouldBeValid();

0 commit comments

Comments
 (0)