@@ -267,3 +267,66 @@ func (s *RuleStateTestSuite) TestCreateStoppedRule() {
267267 s .Equal (http .StatusOK , res .StatusCode )
268268 })
269269}
270+
271+ func (s * RuleStateTestSuite ) TestRuleTags () {
272+ s .Run ("clean up" , func () {
273+ client .DeleteStream ("simStream1" )
274+ client .DeleteRule ("ruleTags" )
275+ })
276+ s .Run ("create rule and attach labels" , func () {
277+ conf := map [string ]any {
278+ "interval" : "10ms" ,
279+ }
280+ resp , err := client .CreateConf ("sources/simulator/confKeys/ttt" , conf )
281+ s .Require ().NoError (err )
282+ s .Require ().Equal (http .StatusOK , resp .StatusCode )
283+
284+ streamSql := `{"sql": "create stream simStream1() WITH (TYPE=\"simulator\", FORMAT=\"json\", CONF_KEY=\"ttt\", SHARED=\"true\")"}`
285+ resp , err = client .CreateStream (streamSql )
286+ s .Require ().NoError (err )
287+ s .T ().Log (GetResponseText (resp ))
288+ s .Require ().Equal (http .StatusCreated , resp .StatusCode )
289+ ruleJson := `{
290+ "id": "ruleTags",
291+ "triggered": false,
292+ "sql": "SELECT * FROM simStream1",
293+ "actions": [
294+ {
295+ "nop":{}
296+ }
297+ ],
298+ "options": {
299+ "sendError": false,
300+ "bufferLength": 2
301+ }
302+ }`
303+ resp , err = client .CreateRule (ruleJson )
304+ s .Require ().NoError (err )
305+ s .T ().Log (GetResponseText (resp ))
306+ s .Require ().Equal (http .StatusCreated , resp .StatusCode )
307+
308+ resp , err = client .AddRuleTags ("ruleTags" , []string {"t1" , "t2" })
309+ s .Require ().NoError (err )
310+ s .T ().Log (GetResponseText (resp ))
311+ s .Require ().Equal (http .StatusOK , resp .StatusCode )
312+
313+ lists , err := client .GetRulesByTags ([]string {"t1" , "t2" })
314+ s .Require ().NoError (err )
315+ s .Require ().Equal (http .StatusOK , resp .StatusCode )
316+ s .Require ().Equal ([]string {"ruleTags" }, lists )
317+
318+ resp , err = client .RemoveRuleTags ("ruleTags" , []string {"t1" })
319+ s .Require ().NoError (err )
320+ s .T ().Log (GetResponseText (resp ))
321+ s .Require ().Equal (http .StatusOK , resp .StatusCode )
322+
323+ lists , err = client .GetRulesByTags ([]string {"t1" , "t2" })
324+ s .Require ().NoError (err )
325+ s .Require ().Equal (http .StatusOK , resp .StatusCode )
326+ s .Require ().Equal ([]string {}, lists )
327+ })
328+ s .Run ("clean up" , func () {
329+ client .DeleteStream ("simStream1" )
330+ client .DeleteRule ("ruleTags" )
331+ })
332+ }
0 commit comments