Skip to content

Commit 68e88a1

Browse files
committed
Put adapter test app in cmd folder
1 parent 0285da1 commit 68e88a1

File tree

13 files changed

+219
-41
lines changed

13 files changed

+219
-41
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ simulate:
5656
.PHONY: adapter
5757
adapter:
5858
@echo "Running the adapter on port 8282...POST to http://localhost:8282/api/v0/command"
59-
@echo "Example: curl -X POST http://localhost:8282/api/v0/command -d '{\"method\": \"ShowExecHosts\"}'"
59+
@echo "Example: curl -X POST http://localhost:8282/api/v0/command -d '{\"method\": \"ShowSchedulerConfiguration\"}'"
6060
mkdir -p ./installation
61-
docker run --rm -it -h master -p 8282:8282 --name $(CONTAINER_NAME) -v ./installation:/opt/cs-install -v ./:/root/go/src/github.com/hpc-gridware/go-clusterscheduler $(IMAGE_NAME):$(IMAGE_TAG) /bin/bash -c "cd /root/go/src/github.com/hpc-gridware/go-clusterscheduler/pkg/adapter && go build . && ./adapter"
61+
docker run --rm -it -h master -p 8282:8282 --name $(CONTAINER_NAME) -v ./installation:/opt/cs-install -v ./:/root/go/src/github.com/hpc-gridware/go-clusterscheduler $(IMAGE_NAME):$(IMAGE_TAG) /bin/bash -c "cd /root/go/src/github.com/hpc-gridware/go-clusterscheduler/cmd/adapter && go build . && ./adapter"
6262

6363
.PHONY: clean
6464
clean:

cmd/adapter/adapter

12.7 MB
Binary file not shown.

cmd/adapter/go.mod

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
module github.com/hpc-gridware/go-clusterscheduler/cmd/adapter
2+
3+
go 1.23.1
4+
5+
replace github.com/hpc-gridware/go-clusterscheduler => ./../../
6+
7+
require (
8+
github.com/gorilla/mux v1.8.1
9+
github.com/hpc-gridware/go-clusterscheduler v0.0.0-20240914092021-0285da16cc31
10+
)
11+
12+
require (
13+
github.com/go-logr/logr v1.4.2 // indirect
14+
github.com/go-logr/stdr v1.2.2 // indirect
15+
github.com/google/uuid v1.6.0 // indirect
16+
go.opentelemetry.io/contrib/bridges/otelslog v0.5.0 // indirect
17+
go.opentelemetry.io/otel v1.30.0 // indirect
18+
go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.6.0 // indirect
19+
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.30.0 // indirect
20+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0 // indirect
21+
go.opentelemetry.io/otel/log v0.6.0 // indirect
22+
go.opentelemetry.io/otel/metric v1.30.0 // indirect
23+
go.opentelemetry.io/otel/sdk v1.30.0 // indirect
24+
go.opentelemetry.io/otel/sdk/log v0.6.0 // indirect
25+
go.opentelemetry.io/otel/sdk/metric v1.30.0 // indirect
26+
go.opentelemetry.io/otel/trace v1.30.0 // indirect
27+
golang.org/x/sys v0.25.0 // indirect
28+
)
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
1515
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
1616
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
1717
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
18-
github.com/hpc-gridware/go-clusterscheduler v0.0.0-20240914052507-a59463d8ccd2 h1:/qxkz4Dre3BY9Px1++uMxva6pjoswjsWDjvWGcXwwOU=
19-
github.com/hpc-gridware/go-clusterscheduler v0.0.0-20240914052507-a59463d8ccd2/go.mod h1:fhKiKQat7cBLahijxDvXhjNscCgT9Etf8OUzQX/eUFY=
18+
github.com/hpc-gridware/go-clusterscheduler v0.0.0-20240914092021-0285da16cc31 h1:XEVm83WWAR6lsaMPViLw9U0NiS+3w7dP1aaRShnQohM=
19+
github.com/hpc-gridware/go-clusterscheduler v0.0.0-20240914092021-0285da16cc31/go.mod h1:x4teNIO7s48mfSq5NC60s7eF4JB1ya7LrwSV0ksht8o=
20+
github.com/hpc-gridware/go-clusterscheduler/pkg/adapter v0.0.0-20240914092021-0285da16cc31 h1:GRoKtcARCxeH5EUmmRmgIXpO2lBBmKmPNhiiqJhKjf8=
21+
github.com/hpc-gridware/go-clusterscheduler/pkg/adapter v0.0.0-20240914092021-0285da16cc31/go.mod h1:M7wBZ9hhAFwN+JbjqvFFZt0IHEOWwqTwLnX+cdWTO0U=
2022
github.com/onsi/ginkgo/v2 v2.19.1 h1:QXgq3Z8Crl5EL1WBAC98A5sEBHARrAJNzAmMxzLcRF0=
2123
github.com/onsi/ginkgo/v2 v2.19.1/go.mod h1:O3DtEWQkPa/F7fBMgmZQKKsluAy8pd3rEQdrjkPb9zA=
2224
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"net/http"
2525

2626
"github.com/gorilla/mux"
27+
"github.com/hpc-gridware/go-clusterscheduler/pkg/adapter"
2728
"github.com/hpc-gridware/go-clusterscheduler/pkg/qconf"
2829
)
2930

@@ -35,7 +36,7 @@ func main() {
3536
}
3637

3738
router := mux.NewRouter()
38-
router.Handle("/api/v0/command", NewAdapter(qc)).Methods("POST")
39+
router.Handle("/api/v0/command", adapter.NewAdapter(qc)).Methods("POST")
3940

4041
log.Println("Starting server on port 8282")
4142
http.ListenAndServe(":8282", router)

go.mod

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,26 @@ go 1.22.4
55
require (
66
github.com/onsi/ginkgo/v2 v2.19.1
77
github.com/onsi/gomega v1.34.1
8+
go.opentelemetry.io/contrib/bridges/otelslog v0.5.0
9+
go.opentelemetry.io/otel v1.30.0
10+
go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.6.0
11+
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.30.0
12+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0
13+
go.opentelemetry.io/otel/log v0.6.0
14+
go.opentelemetry.io/otel/sdk v1.30.0
15+
go.opentelemetry.io/otel/sdk/log v0.6.0
16+
go.opentelemetry.io/otel/sdk/metric v1.30.0
817
)
918

1019
require (
1120
github.com/go-logr/logr v1.4.2 // indirect
21+
github.com/go-logr/stdr v1.2.2 // indirect
1222
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
1323
github.com/google/go-cmp v0.6.0 // indirect
1424
github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect
15-
github.com/stretchr/testify v1.9.0 // indirect
25+
github.com/google/uuid v1.6.0 // indirect
26+
go.opentelemetry.io/otel/metric v1.30.0 // indirect
27+
go.opentelemetry.io/otel/trace v1.30.0 // indirect
1628
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
1729
golang.org/x/net v0.27.0 // indirect
1830
golang.org/x/sys v0.25.0 // indirect

go.sum

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
22
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
34
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
45
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
6+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
7+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
58
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
69
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
710
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
811
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
912
github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg=
1013
github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
14+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
15+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
1116
github.com/onsi/ginkgo/v2 v2.19.1 h1:QXgq3Z8Crl5EL1WBAC98A5sEBHARrAJNzAmMxzLcRF0=
1217
github.com/onsi/ginkgo/v2 v2.19.1/go.mod h1:O3DtEWQkPa/F7fBMgmZQKKsluAy8pd3rEQdrjkPb9zA=
1318
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
@@ -16,6 +21,28 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
1621
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1722
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
1823
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
24+
go.opentelemetry.io/contrib/bridges/otelslog v0.5.0 h1:lU3F57OSLK5mQ1PDBVAfDDaKCPv37MrEbCfTzsF4bz0=
25+
go.opentelemetry.io/contrib/bridges/otelslog v0.5.0/go.mod h1:I84u06zJFr8T5D73fslEUbnRBimVVSBhuVw8L8I92AU=
26+
go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts=
27+
go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc=
28+
go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.6.0 h1:bZHOb8k/CwwSt0DgvgaoOhBXWNdWqFWaIsGTtg1H3KE=
29+
go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.6.0/go.mod h1:XlV163j81kDdIt5b5BXCjdqVfqJFy/LJrHA697SorvQ=
30+
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.30.0 h1:IyFlqNsi8VT/nwYlLJfdM0y1gavxGpEvnf6FtVfZ6X4=
31+
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.30.0/go.mod h1:bxiX8eUeKoAEQmbq/ecUT8UqZwCjZW52yJrXJUSozsk=
32+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0 h1:kn1BudCgwtE7PxLqcZkErpD8GKqLZ6BSzeW9QihQJeM=
33+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0/go.mod h1:ljkUDtAMdleoi9tIG1R6dJUpVwDcYjw3J2Q6Q/SuiC0=
34+
go.opentelemetry.io/otel/log v0.6.0 h1:nH66tr+dmEgW5y+F9LanGJUBYPrRgP4g2EkmPE3LeK8=
35+
go.opentelemetry.io/otel/log v0.6.0/go.mod h1:KdySypjQHhP069JX0z/t26VHwa8vSwzgaKmXtIB3fJM=
36+
go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w=
37+
go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ=
38+
go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE=
39+
go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg=
40+
go.opentelemetry.io/otel/sdk/log v0.6.0 h1:4J8BwXY4EeDE9Mowg+CyhWVBhTSLXVXodiXxS/+PGqI=
41+
go.opentelemetry.io/otel/sdk/log v0.6.0/go.mod h1:L1DN8RMAduKkrwRAFDEX3E3TLOq46+XMGSbUfHU/+vE=
42+
go.opentelemetry.io/otel/sdk/metric v1.30.0 h1:QJLT8Pe11jyHBHfSAgYH7kEmT24eX792jZO1bo4BXkM=
43+
go.opentelemetry.io/otel/sdk/metric v1.30.0/go.mod h1:waS6P3YqFNzeP01kuo/MBBYqaoBJl7efRQHOaydhy1Y=
44+
go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc=
45+
go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o=
1946
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
2047
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
2148
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=

pkg/adapter/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

pkg/adapter/adapter.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
************************************************************************/
1818
/*___INFO__MARK_END__*/
1919

20-
package main
20+
package adapter
2121

2222
import (
2323
"context"
@@ -70,7 +70,7 @@ type CommandRequest struct {
7070
Args []json.RawMessage `json:"args"`
7171
}
7272

73-
// NewAdapter creates an http.Handler that for any Go interface.
73+
// NewAdapter creates an http.Handler for any Go interface.
7474
// The method name and arguments are expected in the JSON request body.
7575
// The response is the return value of the method also in JSON format.
7676
// The arguments and the return values must have a JSON serializable format.
@@ -120,7 +120,7 @@ func (a *adapter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
120120
return
121121
}
122122

123-
logger.InfoContext(ctx, "request", req.MethodName)
123+
logger.InfoContext(ctx, "request", "method", req.MethodName)
124124

125125
method := reflect.ValueOf(a.instance).MethodByName(req.MethodName)
126126
if !method.IsValid() {
@@ -158,22 +158,23 @@ func (a *adapter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
158158
if len(results) > 1 {
159159
if err, ok := results[1].Interface().(error); ok && err != nil {
160160
logErr := fmt.Errorf("method call %s failed: %w", req.MethodName,
161-
results[0].Interface().(error))
161+
results[1].Interface().(error))
162162
a.fail(ctx, w, r, http.StatusInternalServerError, logErr.Error(), err)
163163
return
164164
}
165165
}
166166

167167
if len(results) > 0 {
168168
// check if the result is an error
169-
if _, ok := results[0].Interface().(error); ok {
169+
if err, ok := results[0].Interface().(error); ok && err != nil {
170170
logErr := fmt.Errorf("method call %s failed: %w", req.MethodName,
171171
results[0].Interface().(error))
172172
a.fail(ctx, w, r, http.StatusInternalServerError, logErr.Error(),
173173
results[0].Interface().(error))
174174
return
175175
}
176176

177+
// if there is no error, encode the result
177178
w.Header().Set("Content-Type", "application/json")
178179
if err := json.NewEncoder(w).Encode(results[0].Interface()); err != nil {
179180
logErr := fmt.Errorf("failed to encode response for method %s: %w",
@@ -183,15 +184,15 @@ func (a *adapter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
183184
return
184185
}
185186
}
186-
logger.InfoContext(ctx, "request successfully processed", req.MethodName)
187+
logger.InfoContext(ctx, "request successfully processed", "method", req.MethodName)
187188
}
188189

189190
func (a *adapter) fail(ctx context.Context, w http.ResponseWriter, r *http.Request, status int, message string, err error) {
190191
w.WriteHeader(status)
191192
response := map[string]string{"error": message}
192193
logger.InfoContext(ctx, message, "URL", r.URL.Path)
193194
if err := json.NewEncoder(w).Encode(response); err != nil {
194-
logger.ErrorContext(ctx, "Failed to encode error response", err)
195+
logger.ErrorContext(ctx, "Failed to encode error response", "error", err)
195196
}
196197
// write the error to the response body
197198
w.Write([]byte(message))

pkg/adapter/adapter_suite_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package adapter_test
2+
3+
import (
4+
"testing"
5+
6+
. "github.com/onsi/ginkgo/v2"
7+
. "github.com/onsi/gomega"
8+
)
9+
10+
func TestAdapter(t *testing.T) {
11+
RegisterFailHandler(Fail)
12+
RunSpecs(t, "Adapter Suite")
13+
}

0 commit comments

Comments
 (0)