Skip to content

Commit 77ee8cb

Browse files
committed
deprecate old compose proto messages
1 parent 8f2434b commit 77ee8cb

File tree

5 files changed

+555
-520
lines changed

5 files changed

+555
-520
lines changed

src/pkg/cli/cert_test.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,7 @@ import (
1414
"github.com/DefangLabs/defang/src/pkg/term"
1515
)
1616

17-
type dnsRequest struct {
18-
Type string
19-
Domain string
20-
}
21-
22-
var notFound = errors.New("not found")
17+
var errNotFound = errors.New("not found")
2318

2419
func TestGetCNAMEInSync(t *testing.T) {
2520
t.Cleanup(func() {
@@ -28,7 +23,7 @@ func TestGetCNAMEInSync(t *testing.T) {
2823

2924
notFoundResolver := dns.MockResolver{Records: map[dns.DNSRequest]dns.DNSResponse{
3025
{Type: "NS", Domain: "web.test.com"}: {Records: []string{"ns1.example.com", "ns2.example.com"}, Error: nil},
31-
{Type: "CNAME", Domain: "web.test.com"}: {Records: nil, Error: notFound},
26+
{Type: "CNAME", Domain: "web.test.com"}: {Records: nil, Error: errNotFound},
3227
}}
3328
foundResolver := dns.MockResolver{Records: map[dns.DNSRequest]dns.DNSResponse{
3429
{Type: "NS", Domain: "web.test.com"}: {Records: []string{"ns1.example.com", "ns2.example.com"}, Error: nil},
@@ -39,7 +34,7 @@ func TestGetCNAMEInSync(t *testing.T) {
3934
t.Run("domain not found", func(t *testing.T) {
4035
dns.ResolverAt = func(_ string) dns.Resolver { return notFoundResolver }
4136
_, err := getCNAMEInSync(context.Background(), "web.test.com")
42-
if err != notFound {
37+
if err != errNotFound {
4338
t.Errorf("Expected NotFound error, got %v", err)
4439
}
4540
})
@@ -80,7 +75,7 @@ func TestGetIPInSync(t *testing.T) {
8075

8176
notFoundResolver := dns.MockResolver{Records: map[dns.DNSRequest]dns.DNSResponse{
8277
{Type: "NS", Domain: "test.com"}: {Records: []string{"ns1.example.com", "ns2.example.com"}, Error: nil},
83-
{Type: "A", Domain: "test.com"}: {Records: nil, Error: notFound},
78+
{Type: "A", Domain: "test.com"}: {Records: nil, Error: errNotFound},
8479
}}
8580
partialFoundResolver := dns.MockResolver{Records: map[dns.DNSRequest]dns.DNSResponse{
8681
{Type: "NS", Domain: "test.com"}: {Records: []string{"ns1.example.com", "ns2.example.com"}, Error: nil},
@@ -95,7 +90,7 @@ func TestGetIPInSync(t *testing.T) {
9590
t.Run("domain not found", func(t *testing.T) {
9691
dns.ResolverAt = func(_ string) dns.Resolver { return notFoundResolver }
9792
_, err := getIPInSync(context.Background(), "test.com")
98-
if err != notFound {
93+
if err != errNotFound {
9994
t.Errorf("Expected NotFound error, got %v", err)
10095
}
10196
})

src/pkg/cli/composeUp.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,23 @@ func ComposeUp(ctx context.Context, c client.Client, force bool) (*defangv1.Depl
4646
return nil, project, err
4747
}
4848

49-
if DoDryRun {
50-
yaml, _ := project.MarshalYAML()
51-
fmt.Println(string(yaml))
52-
return nil, project, ErrDryRun
53-
}
54-
5549
bytes, err := project.MarshalYAML()
5650
if err != nil {
5751
return nil, project, err
5852
}
5953

54+
if DoDryRun {
55+
fmt.Println(string(bytes))
56+
return nil, project, ErrDryRun
57+
}
58+
59+
// Unmarshal the project into a map so we can convert it to a structpb.Struct
6060
var asMap map[string]any
6161
if err := yaml.Unmarshal(bytes, &asMap); err != nil {
6262
return nil, project, err
6363
}
6464

65-
str, err := structpb.NewStruct(asMap)
65+
strpb, err := structpb.NewStruct(asMap)
6666
if err != nil {
6767
return nil, project, err
6868
}
@@ -73,7 +73,7 @@ func ComposeUp(ctx context.Context, c client.Client, force bool) (*defangv1.Depl
7373

7474
resp, err := c.Deploy(ctx, &defangv1.DeployRequest{
7575
Project: project.Name,
76-
Compose: str,
76+
Compose: strpb,
7777
})
7878
if err != nil {
7979
return nil, project, err

src/pkg/cli/composeUp_test.go

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"errors"
66
"net/http"
77
"net/http/httptest"
8+
"sync/atomic"
89
"testing"
910

1011
"github.com/DefangLabs/defang/src/pkg/cli/client"
@@ -24,14 +25,23 @@ func (d deployMock) Deploy(ctx context.Context, req *defangv1.DeployRequest) (*d
2425
}
2526

2627
asMap := req.Compose.AsMap()
27-
_, err := loader.LoadWithContext(ctx, types.ConfigDetails{ConfigFiles: []types.ConfigFile{{Config: asMap}}}, func(o *loader.Options) {
28+
p, err := loader.LoadWithContext(ctx, types.ConfigDetails{ConfigFiles: []types.ConfigFile{{Config: asMap}}}, func(o *loader.Options) {
2829
o.SetProjectName(asMap["name"].(string), true) // HACK: workaround for bug in compose-go where it insists on loading the project name from the file
2930
})
3031
if err != nil {
3132
return nil, err
3233
}
3334

34-
return &defangv1.DeployResponse{}, nil
35+
var services []*defangv1.ServiceInfo
36+
for _, service := range p.Services {
37+
services = append(services, &defangv1.ServiceInfo{
38+
Service: &defangv1.ServiceID{
39+
Name: service.Name,
40+
},
41+
})
42+
}
43+
44+
return &defangv1.DeployResponse{Services: services}, nil
3545
}
3646

3747
func TestComposeUp(t *testing.T) {
@@ -41,24 +51,32 @@ func TestComposeUp(t *testing.T) {
4151
t.Fatalf("LoadProject() failed: %v", err)
4252
}
4353

44-
gotContext := false
54+
gotContext := atomic.Bool{}
4555
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
4656
if r.Method != http.MethodPut {
4757
t.Errorf("ComposeStart() failed: expected PUT request, got %s", r.Method)
4858
}
49-
gotContext = true
59+
gotContext.Store(true)
5060
w.WriteHeader(http.StatusOK)
5161
}))
5262
defer server.Close()
5363

54-
_, project, err := ComposeUp(context.Background(), deployMock{MockClient: client.MockClient{UploadUrl: server.URL + "/", Project: proj}}, false)
64+
d, project, err := ComposeUp(context.Background(), deployMock{MockClient: client.MockClient{UploadUrl: server.URL + "/", Project: proj}}, false)
5565
if err != nil {
5666
t.Fatalf("ComposeUp() failed: %v", err)
5767
}
5868
if project == nil {
5969
t.Fatalf("ComposeUp() failed: project is nil")
6070
}
61-
if !gotContext {
71+
if !gotContext.Load() {
6272
t.Errorf("ComposeStart() failed: did not get context")
6373
}
74+
if len(d.Services) != len(proj.Services) {
75+
t.Errorf("ComposeUp() failed: expected %d services, got %d", len(proj.Services), len(d.Services))
76+
}
77+
for _, service := range d.Services {
78+
if _, ok := proj.Services[service.Service.Name]; !ok {
79+
t.Errorf("ComposeUp() failed: service %s not found", service.Service.Name)
80+
}
81+
}
6482
}

0 commit comments

Comments
 (0)