Skip to content

Commit d43f0e5

Browse files
committed
fix bug
1 parent c290d23 commit d43f0e5

File tree

3 files changed

+49
-41
lines changed

3 files changed

+49
-41
lines changed

internal/e2e/daemon/const.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ var (
3737
Description: f.Ptr("path to the custom model directory"),
3838
Name: f.Ptr("CUSTOM_MODEL_PATH"),
3939
Required: f.Ptr(false),
40-
Value: f.Ptr(""),
40+
Value: f.Ptr("/home/arduino/.arduino-bricks/ei-models"),
4141
},
4242
{
4343
Description: f.Ptr("path to the model file"),
4444
Name: f.Ptr("EI_CLASSIFICATION_MODEL"),
4545
Required: f.Ptr(false),
46-
Value: f.Ptr(""),
46+
Value: f.Ptr("/models/ootb/ei/mobilenet-v2-224px.eim"),
4747
},
4848
}
4949
)

internal/orchestrator/bricks/bricks.go

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package bricks
1818
import (
1919
"errors"
2020
"fmt"
21-
"maps"
2221
"slices"
2322

2423
"github.com/arduino/go-paths-helper"
@@ -79,16 +78,16 @@ func (s *Service) AppBrickInstancesList(a *app.ArduinoApp) (AppBrickInstancesRes
7978
return AppBrickInstancesResult{}, fmt.Errorf("brick not found with id %s", brickInstance.ID)
8079
}
8180

82-
instanceVariables := getBrickInstanceVariableDetails(brick, brickInstance.Variables)
81+
variablesMap, instanceVariables := getBrickVariableDetails(brick, brickInstance.Variables)
8382

8483
res.BrickInstances[i] = BrickInstance{
8584
ID: brick.ID,
8685
Name: brick.Name,
8786
Author: "Arduino", // TODO: for now we only support our bricks
8887
Category: brick.Category,
8988
Status: "installed",
90-
ModelID: brickInstance.Model, // TODO: in case is not set by the user, should we return the default model?
91-
Variables: brickInstance.Variables, // TODO: do we want to show also the default value of not explicitly set variables?
89+
ModelID: brickInstance.Model, // TODO: in case is not set by the user, should we return the default model?
90+
Variables: variablesMap, // TODO: do we want to show also the default value of not explicitly set variables?
9291
VariablesDetails: instanceVariables,
9392
}
9493

@@ -107,14 +106,7 @@ func (s *Service) AppBrickInstanceDetails(a *app.ArduinoApp, brickID string) (Br
107106
return BrickInstance{}, fmt.Errorf("brick %s not added in the app", brickID)
108107
}
109108

110-
variables := make(map[string]string, len(brick.Variables))
111-
for _, v := range brick.Variables {
112-
variables[v.Name] = v.DefaultValue
113-
}
114-
// Add/Update the variables with the ones from the app descriptor
115-
maps.Copy(variables, a.Descriptor.Bricks[brickIndex].Variables)
116-
117-
instanceVariables := getBrickInstanceVariableDetails(brick, a.Descriptor.Bricks[brickIndex].Variables)
109+
variables, instanceVariables := getBrickVariableDetails(brick, a.Descriptor.Bricks[brickIndex].Variables)
118110

119111
modelID := a.Descriptor.Bricks[brickIndex].Model
120112
if modelID == "" {
@@ -133,21 +125,30 @@ func (s *Service) AppBrickInstanceDetails(a *app.ArduinoApp, brickID string) (Br
133125
}, nil
134126
}
135127

136-
func getBrickInstanceVariableDetails(
137-
brick *bricksindex.Brick,
138-
brickInstanceVariables map[string]string,
139-
) []BrickInstanceVariable {
128+
func getBrickVariableDetails(
129+
brick *bricksindex.Brick, userVariables map[string]string,
130+
) (map[string]string, []BrickInstanceVariable) {
131+
variablesMap := make(map[string]string, len(brick.Variables))
140132
variableDetails := make([]BrickInstanceVariable, 0, len(brick.Variables))
133+
141134
for _, v := range brick.Variables {
142-
value := brickInstanceVariables[v.Name]
135+
finalValue := v.DefaultValue
136+
137+
userValue, ok := userVariables[v.Name]
138+
if ok {
139+
finalValue = userValue
140+
}
141+
variablesMap[v.Name] = finalValue
142+
143143
variableDetails = append(variableDetails, BrickInstanceVariable{
144144
Name: v.Name,
145-
Value: value,
145+
Value: finalValue,
146146
Description: v.Description,
147147
Required: v.IsRequired(),
148148
})
149149
}
150-
return variableDetails
150+
151+
return variablesMap, variableDetails
151152
}
152153

153154
func (s *Service) BricksDetails(id string) (BrickDetailsResult, error) {

internal/orchestrator/bricks/bricks_test.go

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ import (
1010

1111
func TestGetBrickInstanceVariableDetails(t *testing.T) {
1212
tests := []struct {
13-
name string
14-
brick *bricksindex.Brick
15-
brickInstanceVariables map[string]string
16-
expected []BrickInstanceVariable
13+
name string
14+
brick *bricksindex.Brick
15+
userVariables map[string]string
16+
expectedInstanceVariable []BrickInstanceVariable
17+
expectedVariableMap map[string]string
1718
}{
1819
{
1920
name: "variable is present in the map",
@@ -22,10 +23,11 @@ func TestGetBrickInstanceVariableDetails(t *testing.T) {
2223
{Name: "VAR1", Description: "desc"},
2324
},
2425
},
25-
brickInstanceVariables: map[string]string{"VAR1": "value1"},
26-
expected: []BrickInstanceVariable{
26+
userVariables: map[string]string{"VAR1": "value1"},
27+
expectedInstanceVariable: []BrickInstanceVariable{
2728
{Name: "VAR1", Value: "value1", Description: "desc", Required: true},
2829
},
30+
expectedVariableMap: map[string]string{"VAR1": "value1"},
2931
},
3032
{
3133
name: "variable not present in the map",
@@ -34,10 +36,11 @@ func TestGetBrickInstanceVariableDetails(t *testing.T) {
3436
{Name: "VAR1", Description: "desc"},
3537
},
3638
},
37-
brickInstanceVariables: map[string]string{},
38-
expected: []BrickInstanceVariable{
39+
userVariables: map[string]string{},
40+
expectedInstanceVariable: []BrickInstanceVariable{
3941
{Name: "VAR1", Value: "", Description: "desc", Required: true},
4042
},
43+
expectedVariableMap: map[string]string{"VAR1": ""},
4144
},
4245
{
4346
name: "variable with default value",
@@ -46,10 +49,11 @@ func TestGetBrickInstanceVariableDetails(t *testing.T) {
4649
{Name: "VAR1", DefaultValue: "default", Description: "desc"},
4750
},
4851
},
49-
brickInstanceVariables: map[string]string{},
50-
expected: []BrickInstanceVariable{
51-
{Name: "VAR1", Value: "", Description: "desc", Required: false},
52+
userVariables: map[string]string{},
53+
expectedInstanceVariable: []BrickInstanceVariable{
54+
{Name: "VAR1", Value: "default", Description: "desc", Required: false},
5255
},
56+
expectedVariableMap: map[string]string{"VAR1": "default"},
5357
},
5458
{
5559
name: "multiple variables",
@@ -59,24 +63,27 @@ func TestGetBrickInstanceVariableDetails(t *testing.T) {
5963
{Name: "VAR2", DefaultValue: "def2", Description: "desc2"},
6064
},
6165
},
62-
brickInstanceVariables: map[string]string{"VAR1": "v1"},
63-
expected: []BrickInstanceVariable{
66+
userVariables: map[string]string{"VAR1": "v1"},
67+
expectedInstanceVariable: []BrickInstanceVariable{
6468
{Name: "VAR1", Value: "v1", Description: "desc1", Required: true},
65-
{Name: "VAR2", Value: "", Description: "desc2", Required: false},
69+
{Name: "VAR2", Value: "def2", Description: "desc2", Required: false},
6670
},
71+
expectedVariableMap: map[string]string{"VAR1": "v1", "VAR2": "def2"},
6772
},
6873
{
69-
name: "no variables",
70-
brick: &bricksindex.Brick{Variables: []bricksindex.BrickVariable{}},
71-
brickInstanceVariables: map[string]string{},
72-
expected: []BrickInstanceVariable{},
74+
name: "no variables",
75+
brick: &bricksindex.Brick{Variables: []bricksindex.BrickVariable{}},
76+
userVariables: map[string]string{},
77+
expectedInstanceVariable: []BrickInstanceVariable{},
78+
expectedVariableMap: map[string]string{},
7379
},
7480
}
7581

7682
for _, tt := range tests {
7783
t.Run(tt.name, func(t *testing.T) {
78-
got := getBrickInstanceVariableDetails(tt.brick, tt.brickInstanceVariables)
79-
require.Equal(t, tt.expected, got)
84+
actualVariableMap, actualInstanceVariables := getBrickVariableDetails(tt.brick, tt.userVariables)
85+
require.Equal(t, tt.expectedVariableMap, actualVariableMap)
86+
require.Equal(t, tt.expectedInstanceVariable, actualInstanceVariables)
8087
})
8188
}
8289
}

0 commit comments

Comments
 (0)