Skip to content

Commit d4d3b9c

Browse files
committed
Release 0.3.0
- regenerate examples/binapi for latest VPP from stable/2001 - add import-prefix flag to set custom prefix (fallbacks to using go list) Change-Id: Ib09f134cf9662e348be2575448964de2b9e5c1ee Signed-off-by: Ondrej Fabry <[email protected]>
1 parent 2df5946 commit d4d3b9c

File tree

17 files changed

+2073
-3148
lines changed

17 files changed

+2073
-3148
lines changed

CHANGELOG.md

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,33 @@
22

33
This file lists changes for the GoVPP releases.
44

5+
<!-- TEMPLATE
6+
### Fixes
7+
-
8+
### Features
9+
-
10+
### Other
11+
-
12+
-->
13+
514
## 0.3.0
6-
> _in development_
15+
> _18 March 2020_
716
8-
// TO BE ADDED
17+
### Fixes
18+
- binapi-generator: Fix parsing default meta parameter
19+
20+
### Features
21+
- api: Improve compatibility checking with new error types:
22+
`adapter.UnknownMsgError` and `api.CompatibilityError`
23+
- api: Added exported function `api.GetRegisteredMessageTypes()`
24+
for getting list of all registered message types
25+
- binapi-generator: Support imports of common types from other packages
26+
- binapi-generator: Generate `Reset()` method for messages
27+
- binapi-generator: Compact generated methods
28+
29+
### Other
30+
- deps: Update `github.com/bennyscetbun/jsongo` to `v1.1.0`
31+
- regenerate examples/binapi for latest VPP from stable/2001
932

1033
## 0.2.0
1134
> _04 November 2019_
@@ -27,11 +50,3 @@ This file lists changes for the GoVPP releases.
2750
> _03 July 2019_
2851
2952
The first release that introduces versioning for GoVPP.
30-
31-
### VPP compatibility
32-
33-
| VPP | Status | Notes |
34-
|---|---|---|
35-
| 19.08-rc0 || preliminary support (`19.08-rc0~478-g2f5f` recommended) |
36-
| 19.04 || latest release (preffered) |
37-
| 19.01 || limited capabilities (dropping soon) |

Makefile

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,19 +75,25 @@ lint: ## Run code linter
7575
@echo "# running linter"
7676
@golint ./...
7777

78+
install: install-generator install-proxy ## Install all
79+
7880
install-generator: ## Install binapi-generator
7981
@echo "# installing binapi-generator ${VERSION}"
8082
$(GO) install ${GO_BUILD_ARGS} ./cmd/binapi-generator
8183

82-
generate: ## Generate code
84+
install-proxy: ## Install vpp-proxy
85+
@echo "# installing vpp-proxy ${VERSION}"
86+
$(GO) install ${GO_BUILD_ARGS} ./cmd/vpp-proxy
87+
88+
generate: ## Generate all
8389
@echo "# generating code"
8490
$(GO) generate -x ./...
8591

86-
generate-binapi: install-generator
92+
generate-binapi: install-generator ## Generate binapi code
8793
@echo "# generating binapi VPP $(VPP_VERSION)"
8894
$(GO) generate -x "$(BINAPI_DIR)"
8995

90-
gen-binapi-docker: install-generator
96+
gen-binapi-docker: install-generator ## Generate binapi code (using Docker)
9197
@echo "# generating binapi in docker image ${VPP_IMG}"
9298
$(eval cmds := $(shell go generate -n $(BINAPI_DIR) 2>&1 | tr "\n" ";"))
9399
docker run -t --rm \
@@ -105,6 +111,7 @@ extras:
105111
.PHONY: help \
106112
build cmd examples clean \
107113
lint test integration \
108-
install-generator generate generate-binapi gen-binapi-docker \
114+
install install-generator install-proxy \
115+
generate generate-binapi gen-binapi-docker \
109116
extras
110117

cmd/binapi-generator/generate.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"fmt"
2020
"io"
2121
"os/exec"
22+
"path"
2223
"path/filepath"
2324
"sort"
2425
"strings"
@@ -53,6 +54,8 @@ type context struct {
5354
inputFile string // input file with VPP API in JSON
5455
outputFile string // output file with generated Go package
5556

57+
importPrefix string // defines import path prefix for importing types
58+
5659
inputData []byte // contents of the input file
5760

5861
includeAPIVersion bool // include constant with API version string
@@ -99,13 +102,16 @@ func newContext(inputFile, outputDir string) (*context, error) {
99102
}
100103

101104
func generatePackage(ctx *context, w io.Writer) error {
105+
logf("----------------------------")
102106
logf("generating package %q", ctx.packageName)
107+
logf("----------------------------")
103108

104109
fmt.Fprintln(w, "// Code generated by GoVPP's binapi-generator. DO NOT EDIT.")
105110
fmt.Fprintf(w, "// source: %s\n", ctx.inputFile)
106111
fmt.Fprintln(w)
107112

108113
generateHeader(ctx, w)
114+
generateImports(ctx, w)
109115

110116
// generate module desc
111117
fmt.Fprintln(w, "const (")
@@ -234,6 +240,9 @@ func generateHeader(ctx *context, w io.Writer) {
234240
fmt.Fprintf(w, "package %s\n", ctx.packageName)
235241
fmt.Fprintln(w)
236242

243+
}
244+
245+
func generateImports(ctx *context, w io.Writer) {
237246
fmt.Fprintln(w, "import (")
238247
fmt.Fprintf(w, "\tapi \"%s\"\n", govppApiImportPath)
239248
fmt.Fprintf(w, "\tbytes \"%s\"\n", "bytes")
@@ -244,15 +253,18 @@ func generateHeader(ctx *context, w io.Writer) {
244253
if len(ctx.packageData.Imports) > 0 {
245254
fmt.Fprintln(w)
246255
for _, imp := range getImports(ctx) {
247-
impPkg := getImportPkg(filepath.Dir(ctx.outputFile), imp)
248-
fmt.Fprintf(w, "\t%s \"%s\"\n", imp, strings.TrimSpace(impPkg))
256+
importPath := path.Join(ctx.importPrefix, imp)
257+
if importPath == "" {
258+
importPath = getImportPath(filepath.Dir(ctx.outputFile), imp)
259+
}
260+
fmt.Fprintf(w, "\t%s \"%s\"\n", imp, strings.TrimSpace(importPath))
249261
}
250262
}
251263
fmt.Fprintln(w, ")")
252264
fmt.Fprintln(w)
253265
}
254266

255-
func getImportPkg(outputDir string, pkg string) string {
267+
func getImportPath(outputDir string, pkg string) string {
256268
absPath, _ := filepath.Abs(filepath.Join(outputDir, "..", pkg))
257269
cmd := exec.Command("go", "list", absPath)
258270
var errbuf, outbuf bytes.Buffer

cmd/binapi-generator/generate_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func TestGenerateFromFile(t *testing.T) {
4545
outDir := "test_output_directory"
4646
// remove directory created during test
4747
defer os.RemoveAll(outDir)
48-
err := generateFromFile("testdata/acl.api.json", outDir)
48+
err := generateFromFile("testdata/acl.api.json", outDir, nil)
4949
Expect(err).ShouldNot(HaveOccurred())
5050
fileInfo, err := os.Stat(outDir + "/acl/acl.ba.go")
5151
Expect(err).ShouldNot(HaveOccurred())
@@ -56,15 +56,15 @@ func TestGenerateFromFile(t *testing.T) {
5656
func TestGenerateFromFileInputError(t *testing.T) {
5757
RegisterTestingT(t)
5858
outDir := "test_output_directory"
59-
err := generateFromFile("testdata/nonexisting.json", outDir)
59+
err := generateFromFile("testdata/nonexisting.json", outDir, nil)
6060
Expect(err).Should(HaveOccurred())
6161
Expect(err.Error()).To(ContainSubstring("invalid input file name"))
6262
}
6363

6464
func TestGenerateFromFileReadJsonError(t *testing.T) {
6565
RegisterTestingT(t)
6666
outDir := "test_output_directory"
67-
err := generateFromFile("testdata/input-read-json-error.json", outDir)
67+
err := generateFromFile("testdata/input-read-json-error.json", outDir, nil)
6868
Expect(err).Should(HaveOccurred())
6969
Expect(err.Error()).To(ContainSubstring("invalid input file name"))
7070
}
@@ -79,7 +79,7 @@ func TestGenerateFromFileGeneratePackageError(t *testing.T) {
7979
}
8080
os.RemoveAll(outDir)
8181
}()
82-
err := generateFromFile("testdata/input-generate-error.json", outDir)
82+
err := generateFromFile("testdata/input-generate-error.json", outDir, nil)
8383
Expect(err).Should(HaveOccurred())
8484
}
8585

cmd/binapi-generator/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ var (
4141
includeServices = flag.Bool("include-services", true, "Include RPC service api and client implementation.")
4242
includeComments = flag.Bool("include-comments", false, "Include JSON API source in comments for each object.")
4343
includeBinapiNames = flag.Bool("include-binapi-names", false, "Include binary API names in struct tag.")
44+
importPrefix = flag.String("import-prefix", "", "Define import path prefix to be used to import types.")
4445

4546
continueOnError = flag.Bool("continue-onerror", false, "Continue with next file on error.")
4647
debugMode = flag.Bool("debug", os.Getenv("GOVPP_DEBUG") != "", "Enable debug mode.")
@@ -179,6 +180,7 @@ func generateFromFile(inputFile, outputDir string, typesPkgs []*context) error {
179180
ctx.includeComments = *includeComments
180181
ctx.includeBinapiNames = *includeBinapiNames
181182
ctx.includeServices = *includeServices
183+
ctx.importPrefix = *importPrefix
182184

183185
// read API definition from input file
184186
ctx.inputData, err = ioutil.ReadFile(ctx.inputFile)

core/channel_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func TestRequestReplyMemifDetails(t *testing.T) {
103103
// mock reply
104104
ctx.mockVpp.MockReply(&memif.MemifDetails{
105105
SwIfIndex: 25,
106-
IfName: []byte("memif-name"),
106+
IfName: "memif-name",
107107
Role: 0,
108108
})
109109

0 commit comments

Comments
 (0)