@@ -30,6 +30,7 @@ import (
3030 "github.com/coder/coder/v2/codersdk/agentsdk"
3131 "github.com/coder/coder/v2/testutil"
3232 "github.com/coder/quartz"
33+ "google.golang.org/protobuf/types/known/timestamppb"
3334)
3435
3536func TestReplicaSetEvents (t * testing.T ) {
@@ -41,13 +42,14 @@ func TestReplicaSetEvents(t *testing.T) {
4142 agentURL , err := url .Parse (api .server .URL )
4243 require .NoError (t , err )
4344 namespace := "test-namespace"
45+ sourceUUID := agentsdk .ExternalLogSourceID
4446 client := fake .NewSimpleClientset ()
4547
4648 cMock := quartz .NewMock (t )
4749 reporter , err := newPodEventLogger (ctx , podEventLoggerOptions {
4850 client : client ,
4951 coderURL : agentURL ,
50- namespace : namespace ,
52+ namespaces : namespace ,
5153 logger : slogtest .Make (t , nil ).Leveled (slog .LevelDebug ),
5254 logDebounce : 5 * time .Second ,
5355 clock : cMock ,
@@ -89,7 +91,7 @@ func TestReplicaSetEvents(t *testing.T) {
8991
9092 logs := testutil .RequireRecvCtx (ctx , t , api .logs )
9193 require .Len (t , logs , 1 )
92- require .Contains (t , logs [0 ].Output , "Queued pod from ReplicaSet " )
94+ require .Contains (t , logs [0 ].Output , "Created replicaset " )
9395
9496 event := & corev1.Event {
9597 ObjectMeta : v1.ObjectMeta {
@@ -117,7 +119,7 @@ func TestReplicaSetEvents(t *testing.T) {
117119
118120 logs = testutil .RequireRecvCtx (ctx , t , api .logs )
119121 require .Len (t , logs , 1 )
120- require .Contains (t , logs [0 ].Output , "Deleted ReplicaSet " )
122+ require .Contains (t , logs [0 ].Output , "Deleted replicaset " )
121123
122124 require .Eventually (t , func () bool {
123125 return reporter .tc .isEmpty ()
@@ -138,13 +140,14 @@ func TestPodEvents(t *testing.T) {
138140 agentURL , err := url .Parse (api .server .URL )
139141 require .NoError (t , err )
140142 namespace := "test-namespace"
143+ sourceUUID := agentsdk .ExternalLogSourceID
141144 client := fake .NewSimpleClientset ()
142145
143146 cMock := quartz .NewMock (t )
144147 reporter , err := newPodEventLogger (ctx , podEventLoggerOptions {
145148 client : client ,
146149 coderURL : agentURL ,
147- namespace : namespace ,
150+ namespaces : namespace ,
148151 logger : slogtest .Make (t , nil ).Leveled (slog .LevelDebug ),
149152 logDebounce : 5 * time .Second ,
150153 clock : cMock ,
@@ -305,9 +308,9 @@ func Test_logQueuer(t *testing.T) {
305308 go lq .work (ctx )
306309
307310 ch <- agentLog {
308- op : opLog ,
309- resourceName : "mypod " ,
310- agentToken : "0b42fa72-7f1a-4b59-800d-69d67f56ed8b" ,
311+ name : "mypod" ,
312+ token : "0b42fa72-7f1a-4b59-800d-69d67f56ed8b " ,
313+ delete : false ,
311314 log : agentsdk.Log {
312315 CreatedAt : time .Now (),
313316 Output : "This is a log." ,
@@ -321,9 +324,9 @@ func Test_logQueuer(t *testing.T) {
321324 require .Len (t , logs , 1 )
322325
323326 ch <- agentLog {
324- op : opLog ,
325- resourceName : "mypod " ,
326- agentToken : "0b42fa72-7f1a-4b59-800d-69d67f56ed8b" ,
327+ name : "mypod" ,
328+ token : "0b42fa72-7f1a-4b59-800d-69d67f56ed8b " ,
329+ delete : false ,
327330 log : agentsdk.Log {
328331 CreatedAt : time .Now (),
329332 Output : "This is a log too." ,
@@ -361,6 +364,10 @@ func newFakeAgentAPI(t *testing.T) *fakeAgentAPI {
361364 fakeAPI .PostLogSource (w , r )
362365 })
363366
367+ rtr .Patch ("/api/v2/workspaceagents/me/logs" , func (w http.ResponseWriter , r * http.Request ) {
368+ fakeAPI .PatchLogs (w , r )
369+ })
370+
364371 rtr .Get ("/api/v2/workspaceagents/me/rpc" , func (w http.ResponseWriter , r * http.Request ) {
365372 defer func () {
366373 fakeAPI .disconnect <- struct {}{}
@@ -460,6 +467,29 @@ func (f *fakeAgentAPI) PostLogSource(w http.ResponseWriter, r *http.Request) {
460467 }
461468}
462469
470+ func (f * fakeAgentAPI ) PatchLogs (w http.ResponseWriter , r * http.Request ) {
471+ var req agentsdk.PatchLogs
472+ err := json .NewDecoder (r .Body ).Decode (& req )
473+ if err != nil {
474+ fmt .Println ("failed to decode patch logs:" , err .Error ())
475+ w .WriteHeader (http .StatusBadRequest )
476+ return
477+ }
478+
479+ // Convert agentsdk.Log to proto.Log for the channel
480+ protoLogs := make ([]* proto.Log , len (req .Logs ))
481+ for i , log := range req .Logs {
482+ protoLogs [i ] = & proto.Log {
483+ CreatedAt : timestamppb .New (log .CreatedAt ),
484+ Output : log .Output ,
485+ Level : proto .Log_Level (proto .Log_Level_value [string (log .Level )]),
486+ }
487+ }
488+
489+ f .logs <- protoLogs
490+ w .WriteHeader (http .StatusOK )
491+ }
492+
463493func TestParseNamespaces (t * testing.T ) {
464494 tests := []struct {
465495 name string
0 commit comments