Skip to content

Commit 9f91c93

Browse files
committed
fix(service): address review comments
- Use DataChan for heartbeat topic in New() - Parse ServiceConfig args consistently using TrimSpace - Add default case to validateSettableValue
1 parent d71c5d4 commit 9f91c93

2 files changed

Lines changed: 12 additions & 12 deletions

File tree

service.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ func New(ctx context.Context, mc paho.Client, cfg *Config, nc nodered.Client, lo
192192
}
193193

194194
topic := fmt.Sprintf("m/%s/c/%s/services/agent/heartbeat",
195-
cfg.DomainID, cfg.Channels.CtrlChan())
195+
cfg.DomainID, cfg.Channels.DataChan())
196196
go ag.selfHeartbeat(ctx, topic, cfg.Heartbeat.Interval, cfg.MQTT.QoS)
197197

198198
return ag, nil
@@ -285,7 +285,11 @@ func (a *agent) Control(uuid, cmdStr string) error {
285285
// b, _ := toml.Marshal(cfg)
286286
// config_file_content := base64.StdEncoding.EncodeToString(b).
287287
func (a *agent) ServiceConfig(ctx context.Context, uuid, cmdStr string) error {
288-
cmdArgs := strings.Split(strings.ReplaceAll(cmdStr, " ", ""), ",")
288+
rawParts := strings.Split(cmdStr, ",")
289+
cmdArgs := make([]string, len(rawParts))
290+
for i, p := range rawParts {
291+
cmdArgs[i] = strings.TrimSpace(p)
292+
}
289293
if len(cmdArgs) < 1 {
290294
return errInvalidCommand
291295
}
@@ -323,16 +327,10 @@ func (a *agent) ServiceConfig(ctx context.Context, uuid, cmdStr string) error {
323327
resp = notFound
324328
}
325329
case "set":
326-
// Use SplitN(3) so values containing commas (e.g. URLs) are preserved.
327-
parts := strings.SplitN(cmdStr, ",", 3)
328-
setArgs := make([]string, len(parts))
329-
for i, p := range parts {
330-
setArgs[i] = strings.TrimSpace(p)
331-
}
332-
if len(setArgs) < 3 || setArgs[1] == "" || setArgs[2] == "" {
330+
if len(cmdArgs) < 3 || cmdArgs[1] == "" || cmdArgs[2] == "" {
333331
return errInvalidCommand
334332
}
335-
key, val := setArgs[1], setArgs[2]
333+
key, val := cmdArgs[1], cmdArgs[2]
336334
if !settableKeys[key] {
337335
return errInvalidCommand
338336
}
@@ -882,6 +880,8 @@ func validateSettableValue(key, val string) error {
882880
if err != nil || d <= 0 {
883881
return errInvalidCommand
884882
}
883+
default:
884+
return errInvalidCommand
885885
}
886886
return nil
887887
}

service_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func newServiceWithStore(t *testing.T, cfg agent.Config, store cfgstore.Store) (
6363
hbToken := agentmocks.NewMQTTToken(t)
6464
hbToken.On("Wait").Maybe().Return(true)
6565
hbToken.On("Error").Maybe().Return(error(nil))
66-
mqttClient.On("Publish", mqttTopic("ctrl-channel", "services/agent/heartbeat"),
66+
mqttClient.On("Publish", mqttTopic("data-channel", "services/agent/heartbeat"),
6767
mock.Anything, mock.Anything, mock.Anything).Maybe().Return(hbToken)
6868

6969
ctx, cancel := context.WithCancel(context.Background())
@@ -85,7 +85,7 @@ func newService(t *testing.T, cfg agent.Config, devices ...*devicemgr.Manager) (
8585
hbToken := agentmocks.NewMQTTToken(t)
8686
hbToken.On("Wait").Maybe().Return(true)
8787
hbToken.On("Error").Maybe().Return(error(nil))
88-
mqttClient.On("Publish", mqttTopic("ctrl-channel", "services/agent/heartbeat"),
88+
mqttClient.On("Publish", mqttTopic("data-channel", "services/agent/heartbeat"),
8989
mock.Anything, mock.Anything, mock.Anything).Maybe().Return(hbToken)
9090

9191
ctx, cancel := context.WithCancel(context.Background())

0 commit comments

Comments
 (0)