Skip to content

Commit

Permalink
Fix connection direction
Browse files Browse the repository at this point in the history
Signed-off-by: Young Bu Park <[email protected]>
  • Loading branch information
youngbupark committed Jan 25, 2024
1 parent ba47951 commit a56ecf5
Show file tree
Hide file tree
Showing 8 changed files with 190 additions and 18 deletions.
11 changes: 5 additions & 6 deletions pkg/corerp/frontend/controller/applications/graph_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ func computeGraph(applicationName string, applicationResources []generated.Gener
entry := applicationGraphResourcesByID[id]

for _, connection := range entry.Connections {
otherID := *connection.ID
otherID := to.String(connection.ID)
direction := connection.Direction

// For each connection let's make sure the destination is also part of the application graph. This handles
Expand Down Expand Up @@ -328,11 +328,10 @@ func computeGraph(applicationName string, applicationResources []generated.Gener
//id is the source from which the connections in connectionsBySource go out
if *direction == corerpv20231001preview.DirectionOutbound { // we are dealing with a relation formed by "connection"
connectionsBySource[id] = append(connectionsBySource[id], *connection)
dir := corerpv20231001preview.DirectionInbound
//otherID is the destination to the connections in connectionsByDestination
connectionInbound := corerpv20231001preview.ApplicationGraphConnection{
ID: &id,
Direction: &dir, //Direction is set with respect to Resource defining this connection
ID: to.Ptr(id),
Direction: to.Ptr(corerpv20231001preview.DirectionInbound), //Direction is set with respect to Resource defining this connection
}
connectionsByDestination[otherID] = append(connectionsByDestination[otherID], connectionInbound)
} else {
Expand Down Expand Up @@ -493,7 +492,7 @@ func connectionsFromAPIData(resource generated.GenericResource, allResources []g
// If we encounter an error processing this data, just skip "invalid" connection entry.
entries := []*corerpv20231001preview.ApplicationGraphConnection{}
for _, connection := range connections {
dir := corerpv20231001preview.DirectionInbound
dir := corerpv20231001preview.DirectionOutbound
data := corerpv20231001preview.ConnectionProperties{}
err := toStronglyTypedData(connection, &data)
if err == nil {
Expand Down Expand Up @@ -582,7 +581,7 @@ func providesFromAPIData(resource generated.GenericResource) []*corerpv20231001p
// If we encounter an error processing this data, just skip "invalid" connection entry.
entries := []*corerpv20231001preview.ApplicationGraphConnection{}
for _, connection := range connections {
dir := corerpv20231001preview.DirectionOutbound
dir := corerpv20231001preview.DirectionInbound
data := corerpv20231001preview.ContainerPortProperties{}
err := toStronglyTypedData(connection, &data)
if err == nil {
Expand Down
11 changes: 11 additions & 0 deletions pkg/corerp/frontend/controller/applications/graph_util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ package applications

import (
"context"
"encoding/json"
"fmt"
"testing"

"github.com/radius-project/radius/pkg/cli/clients_new/generated"
Expand Down Expand Up @@ -140,6 +142,13 @@ func Test_computeGraph(t *testing.T) {
envResourceDataFile: "",
expectedDataFile: "graph-app-httproute-out.json",
},
{
name: "using httproute 2",
applicationName: "myapp",
appResourceDataFile: "graph-app-httproute2-in.json",
envResourceDataFile: "",
expectedDataFile: "graph-app-httproute2-out.json",
},
{
name: "direct route",
applicationName: "myapp",
Expand All @@ -166,6 +175,8 @@ func Test_computeGraph(t *testing.T) {
testutil.MustUnmarshalFromFile(tt.expectedDataFile, &expected)

got := computeGraph(tt.applicationName, appResource, envResource)
arr, _ := json.Marshal(got)
fmt.Println(string(arr))
require.ElementsMatch(t, expected, got.Resources)
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{
"connections": [
{
"direction": "Inbound",
"direction": "Outbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/backendapp"
}
],
Expand All @@ -13,7 +13,12 @@
"type": "Applications.Core/containers"
},
{
"connections": [],
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/frontend"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/backendapp",
"name": "backendapp",
"outputResources": [],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{
"connections": [
{
"direction": "Outbound",
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/sql-rte"
}
],
Expand All @@ -13,18 +13,19 @@
"type": "Applications.Core/containers"
},
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/sql-app-ctnr"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Datastores/sqlDatabases/sql-db",
"name": "sql-db",
"provisioningState": "Succeeded",
"type": "Applications.Datastores/sqlDatabases"
},
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/sql-ctnr"
}
],
"connections": [],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/sql-rte",
"name": "sql-rte",
"outputResources": [],
Expand All @@ -34,7 +35,7 @@
{
"connections": [
{
"direction": "Inbound",
"direction": "Outbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Datastores/sqlDatabases/sql-db"
}
],
Expand All @@ -44,4 +45,4 @@
"provisioningState": "Succeeded",
"type": "Applications.Core/containers"
}
]
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
[
{
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1",
"name": "http-back-rte-simple1",
"properties": {
"application": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/Applications/myapp",
"provisioningState": "Succeeded"
},
"type": "Applications.Core/httpRoutes"
},
{
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-front-ctnr-simple1",
"name": "http-front-ctnr-simple1",
"properties": {
"application": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/Applications/myapp",
"containers": {
"image": "magpie:latest",
"ports": {
"web": {
"port": 8080
}
},
"readinessProbe": {
"kind": "httpGet",
"path": "/healthz",
"containerPort": 8080
}
},
"connections": {
"backend": {
"source": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
},
"provisioningState": "Succeeded",
"status": {
"outputResources": {
"id": "/some/thing/else",
"localId": "something"
}
}
},
"type": "Applications.Core/containers"
},
{
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-back-ctnr-simple1",
"name": "http-back-ctnr-simple1",
"properties": {
"application": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/Applications/myapp",
"container": {
"ports": {
"web": {
"port": 8080,
"provides": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
},
"readinessProbe": {
"kind": "httpGet",
"path": "/healthz",
"containerPort": 8080
}
},
"provisioningState": "Succeeded",
"status": {
"outputResources": {
"id": "/some/thing/else",
"localId": "something"
}
}
},
"type": "Applications.Core/containers"
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
[
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-front-ctnr-simple1"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1",
"name": "http-back-rte-simple1",
"outputResources": [],
"provisioningState": "Succeeded",
"type": "Applications.Core/httpRoutes"
},
{
"connections": [
{
"direction": "Outbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-front-ctnr-simple1",
"name": "http-front-ctnr-simple1",
"outputResources": [],
"provisioningState": "Succeeded",
"type": "Applications.Core/containers"
},
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-back-ctnr-simple1",
"name": "http-back-ctnr-simple1",
"outputResources": [],
"provisioningState": "Succeeded",
"type": "Applications.Core/containers"
}
]
4 changes: 3 additions & 1 deletion test/functional/shared/resources/application_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package resource_test

import (
"context"
"encoding/json"
"sort"
"testing"

Expand Down Expand Up @@ -252,6 +253,7 @@ func Test_ApplicationGraph(t *testing.T) {
require.NoError(t, err)
res, err := appGraphClient.GetGraph(ctx, "corerp-application-simple1", map[string]any{}, nil)
require.NoError(t, err)
arr, _ := json.Marshal(res)

sort.Slice(expectedGraphResp.ApplicationGraphResponse.Resources, func(i, j int) bool {
return *expectedGraphResp.ApplicationGraphResponse.Resources[i].ID < *expectedGraphResp.ApplicationGraphResponse.Resources[j].ID
Expand All @@ -269,7 +271,7 @@ func Test_ApplicationGraph(t *testing.T) {
return *res.ApplicationGraphResponse.Resources[i].ID < *res.ApplicationGraphResponse.Resources[j].ID
})

require.Equal(t, expectedGraphResp, res)
require.Equal(t, expectedGraphResp, res, "actual: %s", string(arr))
},
},
})
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
[
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-front-ctnr-simple1"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1",
"name": "http-back-rte-simple1",
"outputResources": [],
"provisioningState": "Succeeded",
"type": "Applications.Core/httpRoutes"
},
{
"connections": [
{
"direction": "Outbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-front-ctnr-simple1",
"name": "http-front-ctnr-simple1",
"outputResources": [],
"provisioningState": "Succeeded",
"type": "Applications.Core/containers"
},
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-back-ctnr-simple1",
"name": "http-back-ctnr-simple1",
"outputResources": [],
"provisioningState": "Succeeded",
"type": "Applications.Core/containers"
}
]

0 comments on commit a56ecf5

Please sign in to comment.