Rename overused ProjectConfig types/variables in the config parser.
Previously there was a ProjectConfig that contained another ProjectConfig,
and neither of these was the *actual* ProjectConfig from the proto file.
This led to code being hard to follow and write, as the actual type was
hard to discern.
Change-Id: I49065ca37b5156eb743f4d2f965a78cf606d5e2d
Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt/+/657223
Reviewed-by: Zach Bush <zmbush@google.com>
Fuchsia-Auto-Submit: Cameron Dale <camrdale@google.com>
Commit-Queue: Cameron Dale <camrdale@google.com>
diff --git a/src/bin/config_parser/src/config_parser/config_parser.go b/src/bin/config_parser/src/config_parser/config_parser.go
index 43445f6..acf623c 100644
--- a/src/bin/config_parser/src/config_parser/config_parser.go
+++ b/src/bin/config_parser/src/config_parser/config_parser.go
@@ -59,7 +59,7 @@
// appendNewCustomers adds the new project configs to the list, verifying that
// none of their customers overlap with existing customers.
-func appendNewCustomers(existingCustomers map[uint32]string, configs []ProjectConfig, newConfigs ...ProjectConfig) (map[uint32]string, []ProjectConfig, error) {
+func appendNewCustomers(existingCustomers map[uint32]string, configs []ProjectConfigData, newConfigs ...ProjectConfigData) (map[uint32]string, []ProjectConfigData, error) {
for _, config := range newConfigs {
if customerName, ok := existingCustomers[config.CustomerId]; ok {
return nil, nil, fmt.Errorf("Duplicate customer ID %v for customers %s and %s", config.CustomerId, customerName, config.CustomerName)
@@ -72,20 +72,20 @@
return existingCustomers, configs, nil
}
-// ParseConfigFromFlags uses the specified flags to find the specified registry,
-// read and parse it.
-func ParseConfigFromFlags() ([]ProjectConfig, error) {
+// ParseProjectConfigDataFromFlags uses the specified flags to find the
+// specified registry, read and parse it.
+func ParseProjectConfigDataFromFlags() ([]ProjectConfigData, error) {
if err := checkFlags(); err != nil {
return nil, err
}
existingCustomers := make(map[uint32]string)
- configs := []ProjectConfig{}
- var pc ProjectConfig
+ configs := []ProjectConfigData{}
+ var pc ProjectConfigData
var err error
if len(repoUrls) != 0 {
gitTimeout := time.Duration(*gitTimeoutSec) * time.Second
- var repoConfigs []ProjectConfig
+ var repoConfigs []ProjectConfigData
for _, repoUrl := range repoUrls {
if repoConfigs, err = ReadConfigFromRepo(repoUrl, gitTimeout); err != nil {
return nil, err
@@ -104,7 +104,7 @@
}
} else if *customerId >= 0 && *projectId >= 0 {
for _, configDir := range configDirs {
- if pc, err = ReadProjectConfigFromDir(configDir, uint32(*customerId), uint32(*projectId)); err != nil {
+ if pc, err = ReadProjectConfigDataFromDir(configDir, uint32(*customerId), uint32(*projectId)); err != nil {
return nil, err
}
if existingCustomers, configs, err = appendNewCustomers(existingCustomers, configs, pc); err != nil {
@@ -112,7 +112,7 @@
}
}
} else {
- var dirConfigs []ProjectConfig
+ var dirConfigs []ProjectConfigData
for _, configDir := range configDirs {
if dirConfigs, err = ReadConfigFromDir(configDir); err != nil {
return nil, err
diff --git a/src/bin/config_parser/src/config_parser/config_reader.go b/src/bin/config_parser/src/config_parser/config_reader.go
index 259e302..6203bc8 100644
--- a/src/bin/config_parser/src/config_parser/config_reader.go
+++ b/src/bin/config_parser/src/config_parser/config_reader.go
@@ -21,7 +21,7 @@
// It is assumed that <rootDir>/projects.yaml contains the customers and projects list. (see project_list.go)
// It is assumed that <rootDir>/<customerName>/<projectName>/config.yaml
// contains the configuration for a project. (see project_config.go)
-func ReadConfigFromDir(rootDir string) (c []ProjectConfig, err error) {
+func ReadConfigFromDir(rootDir string) (c []ProjectConfigData, err error) {
r, err := newConfigReaderForDir(rootDir)
if err != nil {
return c, err
@@ -34,13 +34,13 @@
return c, nil
}
-func ReadProjectConfigFromDir(rootDir string, customerId uint32, projectId uint32) (c ProjectConfig, err error) {
+func ReadProjectConfigDataFromDir(rootDir string, customerId uint32, projectId uint32) (c ProjectConfigData, err error) {
r, err := newConfigReaderForDir(rootDir)
if err != nil {
return c, err
}
- l := []ProjectConfig{}
+ l := []ProjectConfigData{}
if err = readProjectsList(r, &l); err != nil {
return c, err
}
@@ -48,7 +48,7 @@
for i := range l {
config := &l[i]
if config.CustomerId == customerId && config.ProjectId == projectId {
- if err = ReadProjectConfig(r, config); err != nil {
+ if err = ReadProjectConfigData(r, config); err != nil {
return c, fmt.Errorf("Error reading config for %v %v: %v", config.CustomerName, config.ProjectName, err)
}
return *config, nil
@@ -60,7 +60,7 @@
// ReadConfigFromYaml reads the configuration for a single project from a single yaml file.
// See project_config.go for the format.
-func ReadConfigFromYaml(yamlConfigPath string, customerId uint32, projectId uint32, version CobaltVersion) (c ProjectConfig, err error) {
+func ReadConfigFromYaml(yamlConfigPath string, customerId uint32, projectId uint32, version CobaltVersion) (c ProjectConfigData, err error) {
r, err := newConfigReaderForFile(yamlConfigPath)
if err != nil {
return c, err
@@ -69,7 +69,7 @@
c.CustomerId = customerId
c.ProjectId = projectId
c.CobaltVersion = version
- if err := ReadProjectConfig(r, &c); err != nil {
+ if err := ReadProjectConfigData(r, &c); err != nil {
return c, err
}
@@ -86,7 +86,7 @@
return files, err
}
- l := []ProjectConfig{}
+ l := []ProjectConfigData{}
if err := readProjectsList(r, &l); err != nil {
return files, err
}
@@ -158,11 +158,11 @@
}
func (r *configDirReader) Project(customerName string, projectName string) (string, error) {
- projectConfig, err := ioutil.ReadFile(r.projectFilePath(customerName, projectName))
+ projectConfigFile, err := ioutil.ReadFile(r.projectFilePath(customerName, projectName))
if err != nil {
return "", err
}
- return string(projectConfig), nil
+ return string(projectConfigFile), nil
}
// configFileReader is an implementation of configReader where the configuration
@@ -201,15 +201,15 @@
}
func (r *configFileReader) Project(_ string, _ string) (string, error) {
- projectConfig, err := ioutil.ReadFile(r.configFile)
+ projectConfigFile, err := ioutil.ReadFile(r.configFile)
if err != nil {
return "", err
}
- return string(projectConfig), nil
+ return string(projectConfigFile), nil
}
-func readProjectsList(r configReader, l *[]ProjectConfig) (err error) {
+func readProjectsList(r configReader, l *[]ProjectConfigData) (err error) {
// First, we get and parse the customer list.
customerListYaml, err := r.Customers()
if err != nil {
@@ -224,7 +224,7 @@
}
// ReadConfig reads and parses the configuration for all projects from a configReader.
-func ReadConfig(r configReader, l *[]ProjectConfig) (err error) {
+func ReadConfig(r configReader, l *[]ProjectConfigData) (err error) {
if err = readProjectsList(r, l); err != nil {
return err
}
@@ -232,7 +232,7 @@
// Then, based on the customer list, we read and parse all the project configs.
for i := range *l {
c := &((*l)[i])
- if err = ReadProjectConfig(r, c); err != nil {
+ if err = ReadProjectConfigData(r, c); err != nil {
return fmt.Errorf("Error reading config for %v %v: %v", c.CustomerName, c.ProjectName, err)
}
}
@@ -240,13 +240,13 @@
return nil
}
-// ReadProjectConfig reads the configuration of a particular project.
-func ReadProjectConfig(r configReader, c *ProjectConfig) (err error) {
+// ReadProjectConfigData reads the configuration of a particular project.
+func ReadProjectConfigData(r configReader, c *ProjectConfigData) (err error) {
configYaml, err := r.Project(c.CustomerName, c.ProjectName)
if err != nil {
return err
}
- return parseProjectConfig(configYaml, c)
+ return parseProjectConfigData(configYaml, c)
}
// cmpConfigEntry takes two protobuf pointers that must have the fields
@@ -277,10 +277,11 @@
return false
}
-// MergeConfigs accepts a list of ProjectConfigFile protos each of which contains the
-// encoding, metric and report configs for a particular project and aggregates
-// all those into a single ProjectConfigFile proto.
-func MergeConfigs(l []ProjectConfig) (s config.CobaltRegistry) {
+// MergeConfigs accepts a list of ProjectConfigDatas containing
+// ProjectConfigFile protos each of which contains the encoding, metric and
+// report configs for a particular project and aggregates all those into a
+// single CobaltRegistry proto.
+func MergeConfigs(l []ProjectConfigData) (s config.CobaltRegistry) {
customers := map[uint32]int{}
for _, c := range l {
@@ -304,7 +305,7 @@
}
cidx := customers[c.CustomerId]
- s.Customers[cidx].Projects = append(s.Customers[cidx].Projects, v1ProjectConfig(c))
+ s.Customers[cidx].Projects = append(s.Customers[cidx].Projects, toProjectConfigProto(c))
}
sort.SliceStable(s.Customers, func(i, j int) bool {
@@ -320,14 +321,15 @@
return s
}
-// v1Projectconfig converts an internal representation of a ProjectConfig into the ProjectConfig proto.
-func v1ProjectConfig(c ProjectConfig) *config.ProjectConfig {
+// toProjectConfigProto converts an internal representation of a project config,
+// a ProjectConfigData, into the ProjectConfig proto.
+func toProjectConfigProto(c ProjectConfigData) *config.ProjectConfig {
p := config.ProjectConfig{}
p.ProjectName = c.ProjectName
p.ProjectId = c.ProjectId
p.ProjectContact = c.Contact
- if c.ProjectConfig != nil {
- p.Metrics = c.ProjectConfig.MetricDefinitions
+ if c.ProjectConfigFile != nil {
+ p.Metrics = c.ProjectConfigFile.MetricDefinitions
}
p.ExperimentsNamespaces = make([]string, len(c.ProjectExperimentsNamespaces))
diff --git a/src/bin/config_parser/src/config_parser/config_reader_test.go b/src/bin/config_parser/src/config_parser/config_reader_test.go
index de76e55..bd0a0f9 100644
--- a/src/bin/config_parser/src/config_parser/config_reader_test.go
+++ b/src/bin/config_parser/src/config_parser/config_reader_test.go
@@ -85,17 +85,17 @@
metric_name: "MetricB1a"
`
-// Tests the ReadProjectConfig function's basic functionality.
-func TestReadProjectConfig(t *testing.T) {
+// Tests the ReadProjectConfigData function's basic functionality.
+func TestReadProjectConfigData(t *testing.T) {
r := memConfigReader{}
r.SetProject("customer", "project", projectConfigYaml)
- c := ProjectConfig{
+ c := ProjectConfigData{
CustomerName: "customer",
CustomerId: 10,
ProjectName: "project",
ProjectId: 5,
}
- if err := ReadProjectConfig(r, &c); err != nil {
+ if err := ReadProjectConfigData(r, &c); err != nil {
t.Errorf("Error reading project config: %v", err)
}
}
@@ -107,7 +107,7 @@
r.SetProject("fuchsia", "ledger", projectConfigYaml)
r.SetProject("fuchsia", "module_usage_tracking", projectConfigYaml)
r.SetProject("test_customer", "test_project", projectConfigYaml)
- l := []ProjectConfig{}
+ l := []ProjectConfigData{}
if err := ReadConfig(r, &l); err != nil {
t.Errorf("Error reading project config: %v", err)
}
@@ -124,7 +124,7 @@
r.SetProject("fuchsia", "ledger", projectConfigYaml)
r.SetProject("fuchsia", "module_usage_tracking", projectConfigYaml)
r.SetProject("test_customer", "test_project", projectConfigYaml)
- l := []ProjectConfig{}
+ l := []ProjectConfigData{}
if err := ReadConfig(r, &l); err != nil {
if !strings.Contains(err.Error(), "fake/customers.yaml") {
t.Errorf("Error message did not contain the expected fake/customers.yaml: %v", err)
@@ -135,7 +135,7 @@
}
func TestMergeConfigs(t *testing.T) {
- l := []ProjectConfig{
+ l := []ProjectConfigData{
{
CustomerName: "customer5",
CustomerId: 5,
diff --git a/src/bin/config_parser/src/config_parser/expand_defaults.go b/src/bin/config_parser/src/config_parser/expand_defaults.go
index d6001eb..c303ee6 100644
--- a/src/bin/config_parser/src/config_parser/expand_defaults.go
+++ b/src/bin/config_parser/src/config_parser/expand_defaults.go
@@ -4,14 +4,14 @@
"config"
)
-func ExpandDefaults(configs []ProjectConfig) {
+func ExpandDefaults(configs []ProjectConfigData) {
for _, c := range configs {
expandDefaultsForConfig(&c)
}
}
-func expandDefaultsForConfig(c *ProjectConfig) {
- for _, metric := range c.ProjectConfig.MetricDefinitions {
+func expandDefaultsForConfig(c *ProjectConfigData) {
+ for _, metric := range c.ProjectConfigFile.MetricDefinitions {
if !Cobalt11MetricTypesSet[metric.MetricType] {
continue
}
diff --git a/src/bin/config_parser/src/config_parser/git.go b/src/bin/config_parser/src/config_parser/git.go
index 2796ca4..4f9a63b 100644
--- a/src/bin/config_parser/src/config_parser/git.go
+++ b/src/bin/config_parser/src/config_parser/git.go
@@ -67,7 +67,7 @@
// configuration from it. For the organization expected of the repository, see
// ReadConfigFromDir in config_reader.go.
// gitTimeout is the maximum amount of time to wait for a git command to finish.
-func ReadConfigFromRepo(repoUrl string, gitTimeout time.Duration) (c []ProjectConfig, err error) {
+func ReadConfigFromRepo(repoUrl string, gitTimeout time.Duration) (c []ProjectConfigData, err error) {
if err = checkUrl(repoUrl); err != nil {
return c, err
}
diff --git a/src/bin/config_parser/src/config_parser/populate_privacy_params.go b/src/bin/config_parser/src/config_parser/populate_privacy_params.go
index b49ea20..5ec625c 100644
--- a/src/bin/config_parser/src/config_parser/populate_privacy_params.go
+++ b/src/bin/config_parser/src/config_parser/populate_privacy_params.go
@@ -9,7 +9,7 @@
var privacyEncodingParamsFile = flag.String("privacy_encoding_params_file", "", "File containing precomputed privacy encoding parameters.")
-func PopulatePrivacyParams(configs []ProjectConfig) error {
+func PopulatePrivacyParams(configs []ProjectConfigData) error {
if *privacyEncodingParamsFile == "" {
return fmt.Errorf("Missing required flag --privacy_encoding_params_file.")
}
@@ -28,8 +28,8 @@
return nil
}
-func populateParamsForConfig(calc *privacy.PrivacyEncodingParamsCalculator, c *ProjectConfig) error {
- for _, metric := range c.ProjectConfig.MetricDefinitions {
+func populateParamsForConfig(calc *privacy.PrivacyEncodingParamsCalculator, c *ProjectConfigData) error {
+ for _, metric := range c.ProjectConfigFile.MetricDefinitions {
if !Cobalt11MetricTypesSet[metric.MetricType] {
continue
}
diff --git a/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go b/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go
index 7bc7646..822de78 100644
--- a/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go
+++ b/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go
@@ -360,8 +360,8 @@
Reports: []*config.ReportDefinition{&cobalt11Report},
}
- c := ProjectConfig{}
- c.ProjectConfig = &config.ProjectConfigFile{MetricDefinitions: []*config.MetricDefinition{&cobalt10Metric, &cobalt11Metric}}
+ c := ProjectConfigData{}
+ c.ProjectConfigFile = &config.ProjectConfigFile{MetricDefinitions: []*config.MetricDefinition{&cobalt10Metric, &cobalt11Metric}}
calc, err := privacy.NewPrivacyEncodingParamsCalculatorForTesting(testParamRecords)
if err != nil {
diff --git a/src/bin/config_parser/src/config_parser/project_config.go b/src/bin/config_parser/src/config_parser/project_config.go
index 96a257a..bf8870c 100644
--- a/src/bin/config_parser/src/config_parser/project_config.go
+++ b/src/bin/config_parser/src/config_parser/project_config.go
@@ -25,7 +25,7 @@
)
// Represents the configuration of a single project.
-type ProjectConfig struct {
+type ProjectConfigData struct {
CustomerName string
CustomerId uint32
ProjectName string
@@ -34,18 +34,18 @@
CobaltVersion CobaltVersion
CustomerExperimentsNamespaces []interface{}
ProjectExperimentsNamespaces []interface{}
- ProjectConfig *config.ProjectConfigFile
+ ProjectConfigFile *config.ProjectConfigFile
}
// Parse the configuration for one project from the yaml string provided into
-// the config field in ProjectConfig.
-func parseProjectConfig(y string, c *ProjectConfig) (err error) {
- c.ProjectConfig = &config.ProjectConfigFile{}
- if err := yamlpb.UnmarshalString(y, c.ProjectConfig); err != nil {
+// the ProjectConfigFile field in ProjectConfigData.
+func parseProjectConfigData(y string, c *ProjectConfigData) (err error) {
+ c.ProjectConfigFile = &config.ProjectConfigFile{}
+ if err := yamlpb.UnmarshalString(y, c.ProjectConfigFile); err != nil {
return fmt.Errorf("Error while parsing yaml: %v", err)
}
- for _, e := range c.ProjectConfig.MetricDefinitions {
+ for _, e := range c.ProjectConfigFile.MetricDefinitions {
e.CustomerId = c.CustomerId
e.ProjectId = c.ProjectId
e.CustomerName = c.CustomerName
diff --git a/src/bin/config_parser/src/config_parser/project_config_test.go b/src/bin/config_parser/src/config_parser/project_config_test.go
index cf56efc..ebfa2b0 100644
--- a/src/bin/config_parser/src/config_parser/project_config_test.go
+++ b/src/bin/config_parser/src/config_parser/project_config_test.go
@@ -13,8 +13,8 @@
"google.golang.org/protobuf/proto"
)
-// Basic test for parseProjectConfig with a 1.0 project.
-func TestParseProjectConfig(t *testing.T) {
+// Basic test for parseProjectConfigData with a 1.0 project.
+func TestParseProjectConfigData(t *testing.T) {
y := `
metric_definitions:
- metric_name: the_metric_name
@@ -35,7 +35,7 @@
id: 10
report_type: NUMERIC_AGGREGATION
`
- c := ProjectConfig{
+ c := ProjectConfigData{
CustomerId: 1,
ProjectId: 10,
CustomerName: "customer_name",
@@ -43,7 +43,7 @@
CobaltVersion: CobaltVersion1,
}
- if err := parseProjectConfig(y, &c); err != nil {
+ if err := parseProjectConfigData(y, &c); err != nil {
t.Error(err)
}
@@ -89,14 +89,14 @@
},
}
- if !proto.Equal(&e, c.ProjectConfig) {
- t.Errorf("%v\n!=\n%v", prototext.Format(&e), prototext.Format(c.ProjectConfig))
+ if !proto.Equal(&e, c.ProjectConfigFile) {
+ t.Errorf("%v\n!=\n%v", prototext.Format(&e), prototext.Format(c.ProjectConfigFile))
}
}
// Tests that we catch non-unique encoding ids.
-func TestParseProjectConfigUniqueEncodingIds(t *testing.T) {
+func TestParseProjectConfigDataUniqueEncodingIds(t *testing.T) {
y := `
metric_configs:
- id: 1
@@ -117,12 +117,12 @@
- id: 2
`
- c := ProjectConfig{
+ c := ProjectConfigData{
CustomerId: 1,
ProjectId: 10,
}
- if err := parseProjectConfig(y, &c); err == nil {
+ if err := parseProjectConfigData(y, &c); err == nil {
t.Error("Accepted non-unique encoding id.")
}
}
diff --git a/src/bin/config_parser/src/config_parser/project_list.go b/src/bin/config_parser/src/config_parser/project_list.go
index 9aa86ff..921f28d 100644
--- a/src/bin/config_parser/src/config_parser/project_list.go
+++ b/src/bin/config_parser/src/config_parser/project_list.go
@@ -19,9 +19,9 @@
var validNameRegexp = regexp.MustCompile("^[a-zA-Z][_a-zA-Z0-9]{1,81}$")
-// Parse a list of customers appending all their projects to the ProjectConfig
+// Parse a list of customers appending all their projects to the ProjectConfigData
// list that was passed in.
-func parseCustomerList(content string, l *[]ProjectConfig) (err error) {
+func parseCustomerList(content string, l *[]ProjectConfigData) (err error) {
var y []map[string]interface{}
if err := yaml.Unmarshal([]byte(content), &y); err != nil {
return fmt.Errorf("Error while parsing the yaml for a list of Cobalt customer definitions: %v", err)
@@ -87,7 +87,7 @@
fmt.Errorf("Project list for customer %v is invalid. It should be a yaml list.", customerName)
}
- c := []ProjectConfig{}
+ c := []ProjectConfigData{}
if err := populateProjectList(projectsAsList, &c); err != nil {
return fmt.Errorf("Project list for customer %v is invalid: %v", customerName, err)
}
@@ -106,9 +106,9 @@
// populateProjectList populates a list of cobalt projects given in the form of
// a map as returned by a call to yaml.Unmarshal. For more details, see
-// populateProjectConfig. This function also validates that project names and
+// populateProjectConfigData. This function also validates that project names and
// ids are unique.
-func populateProjectList(y []interface{}, l *[]ProjectConfig) (err error) {
+func populateProjectList(y []interface{}, l *[]ProjectConfigData) (err error) {
projectNames := map[string]bool{}
projectIds := map[uint32]bool{}
for i, v := range y {
@@ -120,8 +120,8 @@
if err != nil {
return fmt.Errorf("Entry %v in project list is not valid: %v", i, err)
}
- c := ProjectConfig{}
- if err := populateProjectConfig(p, &c); err != nil {
+ c := ProjectConfigData{}
+ if err := populateProjectConfigData(p, &c); err != nil {
return fmt.Errorf("Error in entry %v in project list: %v", i, err)
}
@@ -140,12 +140,12 @@
return
}
-// populateProjectConfig populates a cobalt project given in the form of a map
+// populateProjectConfigData populates a cobalt project given in the form of a map
// as returned by a call to yaml.Unmarshal. It populates the name, projectId and
-// contact fields of the ProjectConfig it returns. It also validates those
+// contact fields of the ProjectConfigData it returns. It also validates those
// values. The project id must be a positive integer. The project must have
// name, id and contact fields.
-func populateProjectConfig(p map[string]interface{}, c *ProjectConfig) (err error) {
+func populateProjectConfigData(p map[string]interface{}, c *ProjectConfigData) (err error) {
v, ok := p["project_name"]
if !ok {
return fmt.Errorf("Missing name in project list.")
diff --git a/src/bin/config_parser/src/config_parser/project_list_test.go b/src/bin/config_parser/src/config_parser/project_list_test.go
index d5207bc..691dc95 100644
--- a/src/bin/config_parser/src/config_parser/project_list_test.go
+++ b/src/bin/config_parser/src/config_parser/project_list_test.go
@@ -42,7 +42,7 @@
project_contact: maria
`
- e := []ProjectConfig{
+ e := []ProjectConfigData{
{
CustomerName: "fuchsia",
CustomerId: 20,
@@ -85,7 +85,7 @@
},
}
- l := []ProjectConfig{}
+ l := []ProjectConfigData{}
if err := parseCustomerList(y, &l); err != nil {
t.Error(err)
}
@@ -98,7 +98,7 @@
// Tests that duplicated customer project_names and ids result in errors.
func TestParseCustomerListDuplicateValues(t *testing.T) {
var y string
- l := []ProjectConfig{}
+ l := []ProjectConfigData{}
// Checks that an error is returned if a duplicate customer project_name is used.
y = `
@@ -140,7 +140,7 @@
// Tests the customer project_name validation logic.
func TestParseCustomerListNameValidation(t *testing.T) {
var y string
- l := []ProjectConfig{}
+ l := []ProjectConfigData{}
// Checks that an error is returned if no customer project_name is specified.
y = `
@@ -184,7 +184,7 @@
// Tests the customer id validation logic.
func TestParseCustomerListIdValidation(t *testing.T) {
var y string
- l := []ProjectConfig{}
+ l := []ProjectConfigData{}
// Checks that an error is returned if no customer id is specified.
y = `
@@ -226,7 +226,7 @@
}
// Allows tests to specify input data in yaml when testing populateProjectList.
-func parseProjectListForTest(content string, l *[]ProjectConfig) (err error) {
+func parseProjectListForTest(content string, l *[]ProjectConfigData) (err error) {
var y []interface{}
if err := yaml.Unmarshal([]byte(content), &y); err != nil {
panic(err)
@@ -246,12 +246,12 @@
project_contact: yvonne
`
- l := []ProjectConfig{}
+ l := []ProjectConfigData{}
if err := parseProjectListForTest(y, &l); err != nil {
t.Error(err)
}
- e := []ProjectConfig{
+ e := []ProjectConfigData{
{
ProjectName: "ledger",
ProjectId: 10,
@@ -275,7 +275,7 @@
// Test duplicate project project_name or id validation logic.
func TestDuplicateProjectValuesValidation(t *testing.T) {
var y string
- var l []ProjectConfig
+ var l []ProjectConfigData
// Checks that an error is returned if a project_name is duplicated.
y = `
- project_name: ledger
@@ -284,33 +284,33 @@
project_contact: yvonne
`
- l = []ProjectConfig{}
+ l = []ProjectConfigData{}
if err := parseProjectListForTest(y, &l); err == nil {
t.Errorf("Accepted list with duplicate project project_name.")
}
}
-// Allows tests to specify inputs in yaml when testing populateProjectConfig.
-func parseProjectConfigForTest(content string, c *ProjectConfig) (err error) {
+// Allows tests to specify inputs in yaml when testing populateProjectConfigData.
+func parseProjectConfigDataForTest(content string, c *ProjectConfigData) (err error) {
var y map[string]interface{}
if err := yaml.Unmarshal([]byte(content), &y); err != nil {
panic(err)
}
- return populateProjectConfig(y, c)
+ return populateProjectConfigData(y, c)
}
// Checks validation for the project_name field.
func TestPopulateProjectListNameValidation(t *testing.T) {
var y string
- var c ProjectConfig
+ var c ProjectConfigData
// Checks that an error is returned if a project_name is the wrong type.
y = `
project_name: 10
project_contact: ben
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted project with numeric project_name.")
}
@@ -319,8 +319,8 @@
project_name: hello world
project_contact: ben
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted project with invalid project_name.")
}
@@ -328,8 +328,8 @@
y = `
project_contact: ben
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted project without project_name.")
}
}
@@ -337,7 +337,7 @@
// Checks validation for the cobalt_version field.
func TestPopulateProjectListVersionValidation(t *testing.T) {
var y string
- var c ProjectConfig
+ var c ProjectConfigData
y = `
project_name: ledger
@@ -345,8 +345,8 @@
project_contact: ben
cobalt_version: 0
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted a project with Cobalt version 0: %v", err)
}
@@ -354,8 +354,8 @@
project_name: ledger
project_contact: ben
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted a project without an ID")
}
@@ -365,8 +365,8 @@
project_contact: ben
cobalt_version: 10
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted project with invalid Cobalt version.")
}
}
@@ -374,7 +374,7 @@
// Checks validation for the id field.
func TestPopulateProjectListIdValidation(t *testing.T) {
var y string
- var c ProjectConfig
+ var c ProjectConfigData
// Checks that an error is returned if the id missing.
y = `
@@ -382,8 +382,8 @@
project_contact: ben
cobalt_version: 0
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted project without id.")
}
@@ -392,8 +392,8 @@
project_name: ledger
project_contact: ben
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted a project without an ID")
}
@@ -404,8 +404,8 @@
project_contact: ben
cobalt_version: 0
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted project with non-integer id.")
}
@@ -416,8 +416,8 @@
project_contact: ben
cobalt_version: 0
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted project with negative id.")
}
}
@@ -425,7 +425,7 @@
// Checks validation for the project_contact field.
func TestPopulateProjectListContactValidation(t *testing.T) {
var y string
- var c ProjectConfig
+ var c ProjectConfigData
// Checks that an error is returned if a project_contact is the wrong type.
y = `
@@ -433,8 +433,8 @@
project_id: 1
project_contact: 10
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted project with numeric project_contact.")
}
@@ -443,8 +443,8 @@
project_name: ledger
project_id: 10
`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
+ c = ProjectConfigData{}
+ if err := parseProjectConfigDataForTest(y, &c); err == nil {
t.Errorf("Accepted project without project_contact.")
}
}
diff --git a/src/bin/config_parser/src/config_parser_main.go b/src/bin/config_parser/src/config_parser_main.go
index a834966..937a74d 100644
--- a/src/bin/config_parser/src/config_parser_main.go
+++ b/src/bin/config_parser/src/config_parser_main.go
@@ -46,28 +46,28 @@
}
// First, we parse the configuration from the specified location.
- configs, err := config_parser.ParseConfigFromFlags()
+ config_datas, err := config_parser.ParseProjectConfigDataFromFlags()
if err != nil {
fail("parse registry", err)
}
- config_parser.ExpandDefaults(configs)
+ config_parser.ExpandDefaults(config_datas)
// Unless otherwise specified, validate the registry.
if !*skipValidation {
- if err = config_validator.ValidateProjectConfigs(configs); err != nil {
+ if err = config_validator.ValidateProjectConfigDatas(config_datas); err != nil {
fail("validate registry", err)
}
}
// Compute and write the |prob_bit_flip| and |num_index_points| fields for each Cobalt 1.1 ReportDefinition
- // in |configs|.
- if err := config_parser.PopulatePrivacyParams(configs); err != nil {
+ // in |config_datas|.
+ if err := config_parser.PopulatePrivacyParams(config_datas); err != nil {
fail("populate privacy parameters", err)
}
// Merge the list of project configs in a single config.CobaltRegistry.
- c := config_parser.MergeConfigs(configs)
+ c := config_parser.MergeConfigs(config_datas)
filtered := proto.Clone(&c).(*config.CobaltRegistry)
// Filter the fields that are not needed on the client.
diff --git a/src/bin/config_parser/src/config_validator/validator.go b/src/bin/config_parser/src/config_validator/validator.go
index 484983a..c1b90ac 100644
--- a/src/bin/config_parser/src/config_validator/validator.go
+++ b/src/bin/config_parser/src/config_validator/validator.go
@@ -75,11 +75,11 @@
return nil
}
-func ValidateProjectConfigs(configs []config_parser.ProjectConfig) error {
+func ValidateProjectConfigDatas(configs []config_parser.ProjectConfigData) error {
projectErrors := newValidationErrors("customer/project")
for _, c := range configs {
- if err := validateProjectConfig(&c); err != nil {
+ if err := validateProjectConfigData(&c); err != nil {
projectErrors.addError(fmt.Sprintf("%s/%s", c.CustomerName, c.ProjectName), err)
}
}
@@ -87,16 +87,16 @@
return projectErrors.err()
}
-func validateProjectConfig(c *config_parser.ProjectConfig) (err error) {
+func validateProjectConfigData(c *config_parser.ProjectConfigData) (err error) {
if c.CobaltVersion == config_parser.CobaltVersion0 {
return fmt.Errorf("Cobalt version 0.1 configs are no longer supported")
}
- if err = validateConfiguredMetricDefinitions(c.ProjectConfig.MetricDefinitions); err != nil {
+ if err = validateConfiguredMetricDefinitions(c.ProjectConfigFile.MetricDefinitions); err != nil {
return err
}
- if err = validateReplacementMetricSaturation(c.ProjectConfig.MetricDefinitions); err != nil {
+ if err = validateReplacementMetricSaturation(c.ProjectConfigFile.MetricDefinitions); err != nil {
return err
}
return nil
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test.go b/src/bin/config_parser/src/source_generator/source_generator_test.go
index 65497c8..361d238 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test.go
+++ b/src/bin/config_parser/src/source_generator/source_generator_test.go
@@ -157,7 +157,7 @@
func getConfigFrom(config string, cobalt_version config_parser.CobaltVersion) config.CobaltRegistry {
r := memConfigReader{}
r.SetProject("the_customer", "the_project", config)
- con := config_parser.ProjectConfig{
+ con := config_parser.ProjectConfigData{
CustomerName: "the_customer",
CustomerId: 10,
ProjectName: "the_project",
@@ -165,8 +165,8 @@
CobaltVersion: cobalt_version,
}
- _ = config_parser.ReadProjectConfig(r, &con)
- return config_parser.MergeConfigs([]config_parser.ProjectConfig{con})
+ _ = config_parser.ReadProjectConfigData(r, &con)
+ return config_parser.MergeConfigs([]config_parser.ProjectConfigData{con})
}
var cfgTests = []struct {