hs-test: support for multiple workers
[vpp.git] / extras / hs-test / vppinstance.go
index c08514e..a9b97bc 100644 (file)
@@ -72,9 +72,10 @@ const (
 
 type VppInstance struct {
        container        *Container
-       additionalConfig Stanza
+       additionalConfig []Stanza
        connection       *core.Connection
        apiChannel       api.Channel
+       cpus             []int
 }
 
 func (vpp *VppInstance) getSuite() *HstSuite {
@@ -113,7 +114,10 @@ func (vpp *VppInstance) start() error {
                defaultApiSocketFilePath,
                defaultLogFilePath,
        )
-       configContent += vpp.additionalConfig.toString()
+       configContent += vpp.generateCpuConfig()
+       for _, c := range vpp.additionalConfig {
+               configContent += c.toString()
+       }
        startupFileName := vpp.getEtcDir() + "/startup.conf"
        vpp.container.createFile(startupFileName, configContent)
 
@@ -341,3 +345,25 @@ func (vpp *VppInstance) disconnect() {
        vpp.connection.Disconnect()
        vpp.apiChannel.Close()
 }
+
+func (vpp *VppInstance) generateCpuConfig() string {
+       var c Stanza
+       var s string
+       if len(vpp.cpus) < 1 {
+               return ""
+       }
+       c.newStanza("cpu").
+               append(fmt.Sprintf("main-core %d", vpp.cpus[0]))
+       workers := vpp.cpus[1:]
+
+       if len(workers) > 0 {
+               for i := 0; i < len(workers); i++ {
+                       if i != 0 {
+                               s = s + ", "
+                       }
+                       s = s + fmt.Sprintf("%d", workers[i])
+               }
+               c.append(fmt.Sprintf("corelist-workers %s", s))
+       }
+       return c.close().toString()
+}