From 91e26ec437abcd42a8255aa88e31b45da059529e Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 16 Jan 2026 09:33:14 +0100 Subject: pkg/aflow: handle model quota errors Detect model quota violations (assumed to be RPD). Make syz-agent not request jobs that use the model until the next quota reset time. Fixes #6573 --- pkg/aflow/flow_test.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'pkg/aflow/flow_test.go') diff --git a/pkg/aflow/flow_test.go b/pkg/aflow/flow_test.go index 97e2dd93a..3ee3f545b 100644 --- a/pkg/aflow/flow_test.go +++ b/pkg/aflow/flow_test.go @@ -918,3 +918,25 @@ func TestNoInputs(t *testing.T) { require.Equal(t, err.Error(), "flow inputs are missing:"+ " field InBar is not present when converting map to aflow.flowInputs") } + +func TestQuotaResetTime(t *testing.T) { + type Test struct { + when time.Time + reset time.Time + } + testLoc := time.FixedZone("+4h", 4*60*60) // seconds east of UTC + tests := []Test{ + {time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), time.Date(2000, 1, 1, 8, 5, 0, 0, time.UTC)}, + {time.Date(2000, 1, 1, 0, 0, 0, 0, testLoc), time.Date(2000, 1, 1, 8, 5, 0, 0, time.UTC)}, + {time.Date(2000, 1, 1, 8, 0, 0, 0, time.UTC), time.Date(2000, 1, 1, 8, 5, 0, 0, time.UTC)}, + {time.Date(2000, 1, 1, 8, 0, 0, 0, testLoc), time.Date(2000, 1, 1, 8, 5, 0, 0, time.UTC)}, + {time.Date(2000, 1, 1, 9, 0, 0, 0, time.UTC), time.Date(2000, 1, 2, 8, 5, 0, 0, time.UTC)}, + {time.Date(2000, 1, 1, 9, 0, 0, 0, testLoc), time.Date(2000, 1, 1, 8, 5, 0, 0, time.UTC)}, + {time.Date(2000, 1, 1, 13, 0, 0, 0, time.UTC), time.Date(2000, 1, 2, 8, 5, 0, 0, time.UTC)}, + {time.Date(2000, 1, 1, 13, 0, 0, 0, testLoc), time.Date(2000, 1, 2, 8, 5, 0, 0, time.UTC)}, + } + for _, test := range tests { + got := QuotaResetTime(test.when) + assert.Equal(t, test.reset, got, "when: %v", test.when) + } +} -- cgit mrf-deployment