mirror of
https://github.com/ultravioletrs/cocos.git
synced 2026-08-07 15:26:26 +00:00
ecad6514f3
* new agent structure Signed-off-by: Sammy Oina <sammyoina@gmail.com> * minor fixes and testing Signed-off-by: Sammy Oina <sammyoina@gmail.com> * fix lint Signed-off-by: Sammy Oina <sammyoina@gmail.com> * fix tests Signed-off-by: Sammy Oina <sammyoina@gmail.com> * cvm tests fix Signed-off-by: Sammy Oina <sammyoina@gmail.com> * fix test Signed-off-by: Sammy Oina <sammyoina@gmail.com> * fix cli test Signed-off-by: Sammy Oina <sammyoina@gmail.com> * rename Signed-off-by: Sammy Oina <sammyoina@gmail.com> * rename cvm to cvms plural Signed-off-by: Sammy Oina <sammyoina@gmail.com> * rename service Signed-off-by: Sammy Oina <sammyoina@gmail.com> * fix tests Signed-off-by: Sammy Oina <sammyoina@gmail.com> * remove context Signed-off-by: Sammy Oina <sammyoina@gmail.com> * refactor: reorder parameters in NewAlgorithm functions and update CVMClient to CVMSClient Signed-off-by: Sammy Oina <sammyoina@gmail.com> * fix(tests): update SendEvent mock to include an additional parameter Signed-off-by: Sammy Oina <sammyoina@gmail.com> * move expectations Signed-off-by: Sammy Oina <sammyoina@gmail.com> * fix(tests): move event initialization to the correct scope in service tests Signed-off-by: Sammy Oina <sammyoina@gmail.com> * fix(tests): update SendEvent mock to use EXPECT instead of On in service tests Signed-off-by: Sammy Oina <sammyoina@gmail.com> --------- Signed-off-by: Sammy Oina <sammyoina@gmail.com>
78 lines
1.2 KiB
Go
78 lines
1.2 KiB
Go
// Copyright (c) Ultraviolet
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
package logging
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"io"
|
|
"log/slog"
|
|
|
|
"github.com/ultravioletrs/cocos/agent/events"
|
|
)
|
|
|
|
var (
|
|
_ io.Writer = &Stdout{}
|
|
_ io.Writer = &Stderr{}
|
|
)
|
|
|
|
const (
|
|
bufSize = 1024
|
|
algorithmRun = "AlgorithmRun"
|
|
warningStatus = "Warning"
|
|
)
|
|
|
|
type Stdout struct {
|
|
Logger *slog.Logger
|
|
}
|
|
|
|
// Write implements io.Writer.
|
|
func (s *Stdout) Write(p []byte) (n int, err error) {
|
|
inBuf := bytes.NewBuffer(p)
|
|
|
|
buf := make([]byte, bufSize)
|
|
|
|
for {
|
|
n, err := inBuf.Read(buf)
|
|
if err != nil {
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
return len(p) - inBuf.Len(), err
|
|
}
|
|
|
|
s.Logger.Debug(string(buf[:n]))
|
|
}
|
|
|
|
return len(p), nil
|
|
}
|
|
|
|
type Stderr struct {
|
|
Logger *slog.Logger
|
|
EventSvc events.Service
|
|
CmpID string
|
|
}
|
|
|
|
// Write implements io.Writer.
|
|
func (s *Stderr) Write(p []byte) (n int, err error) {
|
|
inBuf := bytes.NewBuffer(p)
|
|
|
|
buf := make([]byte, bufSize)
|
|
|
|
for {
|
|
n, err := inBuf.Read(buf)
|
|
if err != nil {
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
return len(p) - inBuf.Len(), err
|
|
}
|
|
|
|
s.Logger.Error(string(buf[:n]))
|
|
}
|
|
|
|
s.EventSvc.SendEvent(s.CmpID, algorithmRun, warningStatus, json.RawMessage{})
|
|
|
|
return len(p), nil
|
|
}
|