Skip to content

Commit 808599d

Browse files
authored
Merge pull request #72 from giusdp/main
Add prometheus in local deploy
2 parents 0561d84 + 3db880a commit 808599d

10 files changed

Lines changed: 265 additions & 240 deletions

File tree

cmd/fl/app/app.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func ParseCMD(version string) (*kong.Context, error) {
4242

4343
logger, err := buildLogger()
4444

45-
devDeployer := deploy.NewDevDeployer("fl-core", "fl-worker", "fl-net")
45+
devDeployer := deploy.NewDevDeployer(pkg.CoreContName, pkg.WorkerContName, pkg.FLNet)
4646
wasmBuilder := build.NewWasmBuilder()
4747

4848
if err != nil {
@@ -72,8 +72,8 @@ func ParseCMD(version string) (*kong.Context, error) {
7272
kong.BindTo(wasmBuilder, (*build.DockerBuilder)(nil)),
7373
kong.Vars{
7474
"version": version,
75-
"default_core_image": pkg.FLCore,
76-
"default_worker_image": pkg.FLWorker,
75+
"default_core_image": pkg.CoreImg,
76+
"default_worker_image": pkg.WorkerImg,
7777
},
7878
kong.UsageOnError(),
7979
)

internal/command/admin/dev.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ type dev struct {
2828
}
2929

3030
func (d *dev) Run(ctx context.Context, deployer deploy.DevDeployer, logger log.FLogger) error {
31-
logger.Info("Deploying funless locally...\n")
31+
logger.Info("Deploying FunLess locally...\n")
3232

3333
_ = logger.StartSpinner("Setting things up...")
3434

@@ -40,16 +40,21 @@ func (d *dev) Run(ctx context.Context, deployer deploy.DevDeployer, logger log.F
4040
return err
4141
}
4242

43-
_ = logger.StartSpinner(fmt.Sprintf("pulling Core image (%s) 📦", d.CoreImage))
43+
_ = logger.StartSpinner(fmt.Sprintf("pulling Core image (%s) 🐋", d.CoreImage))
4444
if err := logger.StopSpinner(deployer.PullCoreImage(ctx)); err != nil {
4545
return err
4646
}
4747

48-
_ = logger.StartSpinner(fmt.Sprintf("pulling Worker image (%s) 🗃", d.WorkerImage))
48+
_ = logger.StartSpinner(fmt.Sprintf("pulling Worker image (%s) 🐋", d.WorkerImage))
4949
if err := logger.StopSpinner(deployer.PullWorkerImage(ctx)); err != nil {
5050
return err
5151
}
5252

53+
_ = logger.StartSpinner(fmt.Sprintf("pulling Prometheus image (%s) 🐋", d.WorkerImage))
54+
if err := logger.StopSpinner(deployer.PullPromImage(ctx)); err != nil {
55+
return err
56+
}
57+
5358
_ = logger.StartSpinner("starting Core container 🎛️")
5459
if err := logger.StopSpinner(deployer.StartCore(ctx)); err != nil {
5560
return err
@@ -60,8 +65,13 @@ func (d *dev) Run(ctx context.Context, deployer deploy.DevDeployer, logger log.F
6065
return err
6166
}
6267

68+
_ = logger.StartSpinner("starting Prometheus container 📊")
69+
if err := logger.StopSpinner(deployer.StartProm(ctx)); err != nil {
70+
return err
71+
}
72+
6373
logger.Info("\nDeployment complete!")
64-
logger.Info("You can now start using Funless! 🎉")
74+
logger.Info("You can now start using FunLess! 🎉")
6575

6676
return nil
6777
}

internal/command/admin/dev_test.go

Lines changed: 83 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -24,38 +24,28 @@ import (
2424
"github.com/funlessdev/fl-cli/test/mocks"
2525
"github.com/stretchr/testify/assert"
2626
"github.com/stretchr/testify/mock"
27+
"github.com/stretchr/testify/require"
2728
)
2829

2930
func TestRun(t *testing.T) {
3031
dev := dev{}
3132
ctx := context.TODO()
3233

33-
var outbuf bytes.Buffer
34-
testLogger, _ := log.NewLoggerBuilder().WithWriter(&outbuf).DisableAnimation().Build()
35-
3634
deployer := mocks.NewDevDeployer(t)
3735

38-
t.Run("print error when setup client fails", func(t *testing.T) {
36+
t.Run("should return error when setup client fails", func(t *testing.T) {
3937
deployer.On("Setup", ctx, mock.Anything, mock.Anything).Return(
4038
func(ctx context.Context, coreImg string, workerImg string) error {
4139
return errors.New("error")
4240
},
4341
).Once()
4442

45-
_ = dev.Run(ctx, deployer, testLogger)
46-
47-
expectedOutput := []string{
48-
"Deploying funless locally...\n",
49-
"\n",
50-
"Setting things up...\n",
51-
"failed\n",
52-
"",
53-
}
54-
55-
assertOutput(t, expectedOutput, &outbuf)
43+
_, testLogger := testLogger()
44+
err := dev.Run(ctx, deployer, testLogger)
45+
require.Error(t, err)
5646
})
5747

58-
t.Run("print error when docker networks setup fails", func(t *testing.T) {
48+
t.Run("should return error when docker networks setup fails", func(t *testing.T) {
5949
deployer.On("Setup", ctx, mock.Anything, mock.Anything).Return(
6050
func(ctx context.Context, coreImg string, workerImg string) error {
6151
return nil
@@ -65,158 +55,128 @@ func TestRun(t *testing.T) {
6555
return errors.New("error")
6656
}).Once()
6757

68-
_ = dev.Run(ctx, deployer, testLogger)
69-
70-
expectedOutput := []string{
71-
"Deploying funless locally...\n",
72-
"\n",
73-
"Setting things up...\n",
74-
"failed\n",
75-
"",
76-
}
58+
_, testLogger := testLogger()
59+
err := dev.Run(ctx, deployer, testLogger)
60+
require.Error(t, err)
7761

78-
assertOutput(t, expectedOutput, &outbuf)
7962
})
8063

81-
t.Run("print error when pulling core image fails", func(t *testing.T) {
64+
t.Run("should return error when pulling core image fails", func(t *testing.T) {
8265
deployer.On("CreateFLNetwork", ctx).Return(func(ctx context.Context) error {
8366
return nil
8467
})
8568
deployer.On("PullCoreImage", ctx).Return(func(ctx context.Context) error {
8669
return errors.New("error")
8770
}).Once()
8871

89-
_ = dev.Run(ctx, deployer, testLogger)
90-
91-
expectedOutput := []string{
92-
"Deploying funless locally...\n",
93-
"\n",
94-
"Setting things up...\n",
95-
"done\n",
96-
"pulling Core image () 📦\n",
97-
"failed\n",
98-
"",
99-
}
72+
_, testLogger := testLogger()
73+
err := dev.Run(ctx, deployer, testLogger)
10074

101-
assertOutput(t, expectedOutput, &outbuf)
75+
require.Error(t, err)
10276
})
10377

104-
t.Run("print error when pulling worker image fails", func(t *testing.T) {
78+
t.Run("should return error when pulling worker image fails", func(t *testing.T) {
10579
deployer.On("PullCoreImage", ctx).Return(func(ctx context.Context) error {
10680
return nil
10781
})
10882
deployer.On("PullWorkerImage", ctx).Return(func(ctx context.Context) error {
10983
return errors.New("error")
11084
}).Once()
11185

112-
_ = dev.Run(ctx, deployer, testLogger)
113-
114-
expectedOutput := []string{
115-
"Deploying funless locally...\n",
116-
"\n",
117-
"Setting things up...\n",
118-
"done\n",
119-
"pulling Core image () 📦\n",
120-
"done\n",
121-
"pulling Worker image () 🗃\n",
122-
"failed\n",
123-
"",
124-
}
125-
126-
assertOutput(t, expectedOutput, &outbuf)
86+
_, testLogger := testLogger()
87+
err := dev.Run(ctx, deployer, testLogger)
88+
require.Error(t, err)
89+
12790
})
12891

129-
t.Run("print error when starting core fails", func(t *testing.T) {
92+
t.Run("should return error when pulling prometheus image fails", func(t *testing.T) {
13093
deployer.On("PullWorkerImage", ctx).Return(func(ctx context.Context) error {
13194
return nil
13295
})
96+
deployer.On("PullPromImage", ctx).Return(func(ctx context.Context) error {
97+
return errors.New("error")
98+
}).Once()
99+
100+
_, testLogger := testLogger()
101+
err := dev.Run(ctx, deployer, testLogger)
102+
require.Error(t, err)
103+
})
104+
105+
t.Run("should return error when starting core fails", func(t *testing.T) {
106+
deployer.On("PullPromImage", ctx).Return(func(ctx context.Context) error {
107+
return nil
108+
})
133109
deployer.On("StartCore", ctx).Return(func(ctx context.Context) error {
134110
return errors.New("error")
135111
}).Once()
136112

137-
_ = dev.Run(ctx, deployer, testLogger)
138-
139-
expectedOutput := []string{
140-
"Deploying funless locally...\n",
141-
"\n",
142-
"Setting things up...\n",
143-
"done\n",
144-
"pulling Core image () 📦\n",
145-
"done\n",
146-
"pulling Worker image () 🗃\n",
147-
"done\n",
148-
"starting Core container 🎛️\n",
149-
"failed\n",
150-
"",
151-
}
152-
153-
assertOutput(t, expectedOutput, &outbuf)
113+
_, testLogger := testLogger()
114+
err := dev.Run(ctx, deployer, testLogger)
115+
require.Error(t, err)
154116
})
155117

156-
t.Run("print error when starting worker fails", func(t *testing.T) {
118+
t.Run("should return error when starting worker fails", func(t *testing.T) {
157119
deployer.On("StartCore", ctx).Return(func(ctx context.Context) error {
158120
return nil
159121
})
160122
deployer.On("StartWorker", ctx).Return(func(ctx context.Context) error {
161123
return errors.New("error")
162124
}).Once()
163125

164-
_ = dev.Run(ctx, deployer, testLogger)
165-
166-
expectedOutput := []string{
167-
"Deploying funless locally...\n",
168-
"\n",
169-
"Setting things up...\n",
170-
"done\n",
171-
"pulling Core image () 📦\n",
172-
"done\n",
173-
"pulling Worker image () 🗃\n",
174-
"done\n",
175-
"starting Core container 🎛️\n",
176-
"done\n",
177-
"starting Worker container 👷\n",
178-
"failed\n",
179-
"",
180-
}
181-
182-
assertOutput(t, expectedOutput, &outbuf)
126+
_, testLogger := testLogger()
127+
err := dev.Run(ctx, deployer, testLogger)
128+
require.Error(t, err)
183129
})
184-
185-
t.Run("successful prints when everything goes well", func(t *testing.T) {
130+
t.Run("should return error when starting prometheus fails", func(t *testing.T) {
186131
deployer.On("StartWorker", ctx).Return(func(ctx context.Context) error {
187132
return nil
188133
})
134+
deployer.On("StartProm", ctx).Return(func(ctx context.Context) error {
135+
return errors.New("error")
136+
}).Once()
189137

190-
_ = dev.Run(ctx, deployer, testLogger)
191-
192-
expectedOutput := []string{
193-
"Deploying funless locally...\n",
194-
"\n",
195-
"Setting things up...\n",
196-
"done\n",
197-
"pulling Core image () 📦\n",
198-
"done\n",
199-
"pulling Worker image () 🗃\n",
200-
"done\n",
201-
"starting Core container 🎛️\n",
202-
"done\n",
203-
"starting Worker container 👷\n",
204-
"done\n",
205-
"\n",
206-
"Deployment complete!\n",
207-
"You can now start using Funless! 🎉\n",
208-
"",
209-
}
210-
211-
assertOutput(t, expectedOutput, &outbuf)
138+
_, testLogger := testLogger()
139+
err := dev.Run(ctx, deployer, testLogger)
140+
require.Error(t, err)
212141
})
142+
t.Run("successful prints when everything goes well", func(t *testing.T) {
143+
deployer.On("StartProm", ctx).Return(func(ctx context.Context) error {
144+
return nil
145+
})
146+
147+
outbuf, testLogger := testLogger()
148+
149+
err := dev.Run(ctx, deployer, testLogger)
150+
require.NoError(t, err)
151+
152+
expectedOutput := `Deploying FunLess locally...
153+
154+
Setting things up...
155+
done
156+
pulling Core image () 🐋
157+
done
158+
pulling Worker image () 🐋
159+
done
160+
pulling Prometheus image () 🐋
161+
done
162+
starting Core container 🎛️
163+
done
164+
starting Worker container 👷
165+
done
166+
starting Prometheus container 📊
167+
done
168+
169+
Deployment complete!
170+
You can now start using FunLess! 🎉
171+
`
172+
assert.NoError(t, err)
173+
assert.Equal(t, expectedOutput, outbuf.String())
213174

175+
})
214176
}
215177

216-
func assertOutput(t *testing.T, expected []string, outbuf *bytes.Buffer) {
217-
t.Helper()
218-
for _, expected := range expected {
219-
line, _ := outbuf.ReadString('\n')
220-
assert.Equal(t, expected, line)
221-
}
178+
func testLogger() (*bytes.Buffer, log.FLogger) {
179+
var outbuf bytes.Buffer
180+
testLogger, _ := log.NewLoggerBuilder().WithWriter(&outbuf).DisableAnimation().Build()
181+
return &outbuf, testLogger
222182
}

internal/command/admin/reset.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424
type reset struct{}
2525

2626
func (r *reset) Run(ctx context.Context, deployer deploy.DevDeployer, logger log.FLogger) error {
27-
logger.Info("Removing local funless deployment...\n")
27+
logger.Info("Removing local FunLess deployment...\n")
2828

2929
if err := deployer.Setup(ctx, "", ""); err != nil {
3030
return err
@@ -40,6 +40,11 @@ func (r *reset) Run(ctx context.Context, deployer deploy.DevDeployer, logger log
4040
return err
4141
}
4242

43+
_ = logger.StartSpinner("Removing Prometheus container... ⚰️")
44+
if err := logger.StopSpinner(deployer.RemovePromContainer(ctx)); err != nil {
45+
return err
46+
}
47+
4348
_ = logger.StartSpinner("Removing fl network... ✂️")
4449
if err := logger.StopSpinner(deployer.RemoveFLNetwork(ctx)); err != nil {
4550
return err

0 commit comments

Comments
 (0)