blob: 07dfb1efd39c9d70bef8722804c3e84fc56baea7 [file] [log] [blame]
/*
* Copyright 2018-present Open Networking Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package config
import (
"flag"
"fmt"
"strconv"
"strings"
"github.com/opencord/voltha-lib-go/v4/pkg/log"
)
// Open OLT default constants
const (
defaultOpenOltAgentIp = "10.90.0.114"
defaultOpenOltAgentPort = 9191
defaultNumOfOnu = 128
defaultNumOfSubscribersPerOnu = 1
defaultWorkFlowName = "TT"
defaultTimeIntervalBetweenSubs = 5 // in seconds
defaultNniIntfId = 0
defaultKVstoreHost = "192.168.1.1"
defaultKVstorePort = 2379
defaultTpIDs = "64"
defaultIsGroupTest = false
)
// OpenOltScaleTesterConfigConfig represents the set of configurations used by the read-write adaptercore service
type OpenOltScaleTesterConfig struct {
// Command line parameters
OpenOltAgentAddress string
OpenOltAgentIP string
OpenOltAgentPort uint
NniIntfID uint
NumOfOnu uint
SubscribersPerOnu uint
WorkflowName string
TimeIntervalBetweenSubs uint // in seconds
KVStoreHost string
KVStorePort int
TpIDsString string
TpIDList []int
IsGroupTest bool
}
var logger log.CLogger
func init() {
// Setup this package so that it's log level can be modified at run time
var err error
logger, err = log.RegisterPackage(log.JSON, log.DebugLevel, log.Fields{})
if err != nil {
panic(err)
}
}
func GetTpIDList(tpIDsStr string) []int {
stringSlice := strings.Split(tpIDsStr, ",")
var tpIDSlice []int
for _, s := range stringSlice {
if tpID, err := strconv.Atoi(s); err == nil {
tpIDSlice = append(tpIDSlice, tpID)
}
}
logger.Debugw(nil, "parsed-tp-id-slice", log.Fields{"tpIDSlice": tpIDSlice})
return tpIDSlice
}
// NewOpenOltScaleTesterConfig returns a new RWCore config
func NewOpenOltScaleTesterConfig() *OpenOltScaleTesterConfig {
var OpenOltScaleTesterConfig = OpenOltScaleTesterConfig{ // Default values
OpenOltAgentAddress: defaultOpenOltAgentIp + ":" + strconv.Itoa(defaultOpenOltAgentPort),
NumOfOnu: defaultNumOfOnu,
SubscribersPerOnu: defaultNumOfSubscribersPerOnu,
WorkflowName: defaultWorkFlowName,
TimeIntervalBetweenSubs: defaultTimeIntervalBetweenSubs,
NniIntfID: defaultNniIntfId,
KVStoreHost: defaultKVstoreHost,
KVStorePort: defaultKVstorePort,
TpIDList: GetTpIDList(defaultTpIDs),
IsGroupTest: defaultIsGroupTest,
}
return &OpenOltScaleTesterConfig
}
// ParseCommandArguments parses the arguments for OpenOltScale Tester
func (st *OpenOltScaleTesterConfig) ParseCommandArguments() {
help := fmt.Sprintf("OpenOLT Agent IP Address")
flag.StringVar(&(st.OpenOltAgentIP), "openolt_agent_ip_address", defaultOpenOltAgentIp, help)
help = fmt.Sprintf("OpenOLT Agent gRPC port")
flag.UintVar(&(st.OpenOltAgentPort), "openolt_agent_port", defaultOpenOltAgentPort, help)
help = fmt.Sprintf("OpenOLT Agent Nni Intf Id")
flag.UintVar(&(st.NniIntfID), "openolt_agent_nni_intf_id", defaultNniIntfId, help)
help = fmt.Sprintf("Number of ONU")
flag.UintVar(&(st.NumOfOnu), "num_of_onu", defaultNumOfOnu, help)
help = fmt.Sprintf("Subscribers per ONU")
flag.UintVar(&(st.SubscribersPerOnu), "subscribers_per_onu", defaultNumOfSubscribersPerOnu, help)
help = fmt.Sprintf("Workflow name")
flag.StringVar(&(st.WorkflowName), "workflow_name", defaultWorkFlowName, help)
help = fmt.Sprintf("Time Interval Between provisioning each subscriber")
flag.UintVar(&(st.TimeIntervalBetweenSubs), "time_interval_between_subs", defaultTimeIntervalBetweenSubs, help)
help = fmt.Sprintf("KV store host")
flag.StringVar(&(st.KVStoreHost), "kv_store_host", defaultKVstoreHost, help)
help = fmt.Sprintf("KV store port")
flag.IntVar(&(st.KVStorePort), "kv_store_port", defaultKVstorePort, help)
help = fmt.Sprintf("Command seperated TP ID list for Workflow")
flag.StringVar(&(st.TpIDsString), "tp_ids", defaultTpIDs, help)
help = fmt.Sprintf("Is this run a group test")
flag.BoolVar(&(st.IsGroupTest), "is_group_test", defaultIsGroupTest, help)
flag.Parse()
}