mirror of
				https://github.com/ClusterCockpit/cc-backend
				synced 2025-11-04 01:25:06 +01:00 
			
		
		
		
	Restructure black box test
Remove string ptr from unit prefix
This commit is contained in:
		internal
repository
repository_test
pkg
test
tools/archive-migration
@@ -77,8 +77,8 @@ func HandleImportFlag(flag string) error {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		checkJobData(&jobData)
 | 
			
		||||
		SanityChecks(&jobMeta.BaseJob)
 | 
			
		||||
		//checkJobData(&jobData)
 | 
			
		||||
		//	SanityChecks(&jobMeta.BaseJob)
 | 
			
		||||
		jobMeta.MonitoringStatus = schema.MonitoringStatusArchivingSuccessful
 | 
			
		||||
		if job, err := GetJobRepository().Find(&jobMeta.JobID, &jobMeta.Cluster, &jobMeta.StartTime); err != sql.ErrNoRows {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
@@ -339,17 +339,15 @@ func getNormalizationFactor(v float64) (float64, int) {
 | 
			
		||||
	return math.Pow10(count * scale), count * scale
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func normalize(avg float64, u schema.Unit) (float64, schema.Unit) {
 | 
			
		||||
func normalize(avg float64, p string) (float64, string) {
 | 
			
		||||
	f, e := getNormalizationFactor(avg)
 | 
			
		||||
 | 
			
		||||
	if e != 0 {
 | 
			
		||||
 | 
			
		||||
		p := units.NewPrefixFromFactor(units.NewPrefix(*u.Prefix), e)
 | 
			
		||||
		np := p.Prefix()
 | 
			
		||||
		return f, schema.Unit{Prefix: &np, Base: u.Base}
 | 
			
		||||
		np := units.NewPrefixFromFactor(units.NewPrefix(p), e)
 | 
			
		||||
		return f, np.Prefix()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return f, u
 | 
			
		||||
	return f, p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func checkJobData(d *schema.JobData) error {
 | 
			
		||||
@@ -368,22 +366,23 @@ func checkJobData(d *schema.JobData) error {
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				avg := sum / float64(len(metric.Series))
 | 
			
		||||
				f, u := normalize(avg, metric.Unit)
 | 
			
		||||
				f, p := normalize(avg, metric.Unit.Prefix)
 | 
			
		||||
 | 
			
		||||
				if u.Prefix != metric.Unit.Prefix {
 | 
			
		||||
				if p != metric.Unit.Prefix {
 | 
			
		||||
 | 
			
		||||
					for _, s := range metric.Series {
 | 
			
		||||
						fp := schema.ConvertFloatToFloat64(s.Data)
 | 
			
		||||
					fmt.Printf("Convert %e", f)
 | 
			
		||||
					// for _, s := range metric.Series {
 | 
			
		||||
					// fp := schema.ConvertFloatToFloat64(s.Data)
 | 
			
		||||
					//
 | 
			
		||||
					// for i := 0; i < len(fp); i++ {
 | 
			
		||||
					// 	fp[i] *= f
 | 
			
		||||
					// 	fp[i] = math.Ceil(fp[i])
 | 
			
		||||
					// }
 | 
			
		||||
					//
 | 
			
		||||
					// s.Data = schema.GetFloat64ToFloat(fp)
 | 
			
		||||
					// }
 | 
			
		||||
 | 
			
		||||
						for i := 0; i < len(fp); i++ {
 | 
			
		||||
							fp[i] *= f
 | 
			
		||||
							fp[i] = math.Ceil(fp[i])
 | 
			
		||||
						}
 | 
			
		||||
 | 
			
		||||
						s.Data = schema.GetFloat64ToFloat(fp)
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					metric.Unit.Prefix = u.Prefix
 | 
			
		||||
					metric.Unit.Prefix = p
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -77,25 +77,3 @@ func TestNormalizeKeep(t *testing.T) {
 | 
			
		||||
		t.Errorf("Failed Prefix or unit: Want G, Got %s", p.Prefix())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// func TestHandleImportFlag(t *testing.T) {
 | 
			
		||||
// 	t.Error("wrong summary for diagnostic ")
 | 
			
		||||
// 	r := setupRepo(t)
 | 
			
		||||
//
 | 
			
		||||
// 	s := "../../test/repo/meta1.json:../../test/repo/data1.json"
 | 
			
		||||
// 	err := HandleImportFlag(s)
 | 
			
		||||
// 	if err != nil {
 | 
			
		||||
// 		t.Fatal(err)
 | 
			
		||||
// 	}
 | 
			
		||||
//
 | 
			
		||||
// 	jobId, cluster, startTime := int64(1404396), "emmy", int64(1609299584)
 | 
			
		||||
// 	job, err := r.Find(&jobId, &cluster, &startTime)
 | 
			
		||||
// 	if err != nil {
 | 
			
		||||
// 		t.Fatal(err)
 | 
			
		||||
// 	}
 | 
			
		||||
//
 | 
			
		||||
// 	if job.ID != 1366 {
 | 
			
		||||
// 		t.Errorf("wrong summary for diagnostic 3\ngot: %d \nwant: 1366", job.JobID)
 | 
			
		||||
// 	}
 | 
			
		||||
// }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										69
									
								
								internal/repository_test/importFlag.go
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										69
									
								
								internal/repository_test/importFlag.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
// Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
 | 
			
		||||
// All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
package repository_test
 | 
			
		||||
 | 
			
		||||
import "testing"
 | 
			
		||||
 | 
			
		||||
func TestHandleImportFlag(t *testing.T) {
 | 
			
		||||
	r := setupRepo(t)
 | 
			
		||||
 | 
			
		||||
  paths, err := filepath.Glob(filepath.Join("testdata", "*.input"))
 | 
			
		||||
  if err != nil {
 | 
			
		||||
    t.Fatal(err)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for _, path := range paths {
 | 
			
		||||
    _, filename := filepath.Split(path)
 | 
			
		||||
    testname := filename[:len(filename)-len(filepath.Ext(path))]
 | 
			
		||||
 | 
			
		||||
    // Each path turns into a test: the test name is the filename without the
 | 
			
		||||
    // extension.
 | 
			
		||||
    t.Run(testname, func(t *testing.T) {
 | 
			
		||||
      source, err := os.ReadFile(path)
 | 
			
		||||
      if err != nil {
 | 
			
		||||
        t.Fatal("error reading source file:", err)
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // >>> This is the actual code under test.
 | 
			
		||||
      output, err := format.Source(source)
 | 
			
		||||
      if err != nil {
 | 
			
		||||
        t.Fatal("error formatting:", err)
 | 
			
		||||
      }
 | 
			
		||||
      // <<<
 | 
			
		||||
 | 
			
		||||
      // Each input file is expected to have a "golden output" file, with the
 | 
			
		||||
      // same path except the .input extension is replaced by .golden
 | 
			
		||||
      goldenfile := filepath.Join("testdata", testname+".golden")
 | 
			
		||||
      want, err := os.ReadFile(goldenfile)
 | 
			
		||||
      if err != nil {
 | 
			
		||||
        t.Fatal("error reading golden file:", err)
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if !bytes.Equal(output, want) {
 | 
			
		||||
        t.Errorf("\n==== got:\n%s\n==== want:\n%s\n", output, want)
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	s := "../../test/repo/meta1.json:../../test/repo/data1.json"
 | 
			
		||||
	err := HandleImportFlag(s)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	jobId, cluster, startTime := int64(398764), "fritz", int64(1675954353)
 | 
			
		||||
	job, err := r.Find(&jobId, &cluster, &startTime)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if job.ID != 2 {
 | 
			
		||||
		t.Errorf("wrong summary for diagnostic 3\ngot: %d \nwant: 1366", job.JobID)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										112
									
								
								internal/repository_test/setup.go
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										112
									
								
								internal/repository_test/setup.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,112 @@
 | 
			
		||||
// Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
 | 
			
		||||
// All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
package repository_test
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"github.com/ClusterCockpit/cc-backend/internal/config"
 | 
			
		||||
	"github.com/ClusterCockpit/cc-backend/internal/repository"
 | 
			
		||||
	"github.com/ClusterCockpit/cc-backend/pkg/archive"
 | 
			
		||||
	"github.com/ClusterCockpit/cc-backend/pkg/log"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func copyFile(s string, d string) error {
 | 
			
		||||
	r, err := os.Open(s)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer r.Close()
 | 
			
		||||
	w, err := os.Create(d)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer w.Close()
 | 
			
		||||
	w.ReadFrom(r)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func setupRepo(t *testing.T) *repository.JobRepository {
 | 
			
		||||
	const testconfig = `{
 | 
			
		||||
	"addr":            "0.0.0.0:8080",
 | 
			
		||||
	"validate": false,
 | 
			
		||||
	"archive": {
 | 
			
		||||
		"kind": "file",
 | 
			
		||||
		"path": "./var/job-archive"
 | 
			
		||||
	},
 | 
			
		||||
	"clusters": [
 | 
			
		||||
	{
 | 
			
		||||
	   "name": "testcluster",
 | 
			
		||||
	   "metricDataRepository": {"kind": "test", "url": "bla:8081"},
 | 
			
		||||
	   "filterRanges": {
 | 
			
		||||
		"numNodes": { "from": 1, "to": 64 },
 | 
			
		||||
		"duration": { "from": 0, "to": 86400 },
 | 
			
		||||
		"startTime": { "from": "2022-01-01T00:00:00Z", "to": null }
 | 
			
		||||
	   }
 | 
			
		||||
	},
 | 
			
		||||
    {
 | 
			
		||||
	   "name": "fritz",
 | 
			
		||||
	   "metricDataRepository": {"kind": "test", "url": "bla:8081"},
 | 
			
		||||
	   "filterRanges": {
 | 
			
		||||
		"numNodes": { "from": 1, "to": 944 },
 | 
			
		||||
		"duration": { "from": 0, "to": 86400 },
 | 
			
		||||
		"startTime": { "from": "2022-01-01T00:00:00Z", "to": null }
 | 
			
		||||
	   }
 | 
			
		||||
	},
 | 
			
		||||
    {
 | 
			
		||||
		"name": "taurus",
 | 
			
		||||
		"metricDataRepository": {"kind": "test", "url": "bla:8081"},
 | 
			
		||||
		 "filterRanges": {
 | 
			
		||||
		   "numNodes": { "from": 1, "to": 4000 },
 | 
			
		||||
		   "duration": { "from": 0, "to": 604800 },
 | 
			
		||||
		   "startTime": { "from": "2010-01-01T00:00:00Z", "to": null }
 | 
			
		||||
		 }
 | 
			
		||||
	 }
 | 
			
		||||
	]}`
 | 
			
		||||
 | 
			
		||||
	log.Init("info", true)
 | 
			
		||||
	tmpdir := t.TempDir()
 | 
			
		||||
 | 
			
		||||
	jobarchive := filepath.Join(tmpdir, "job-archive")
 | 
			
		||||
	if err := os.Mkdir(jobarchive, 0777); err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := os.WriteFile(filepath.Join(jobarchive, "version.txt"), []byte(fmt.Sprintf("%d", 1)), 0666); err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	fritzArchive := filepath.Join(tmpdir, "job-archive", "fritz")
 | 
			
		||||
	if err := os.Mkdir(fritzArchive, 0777); err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := copyFile(filepath.Join("testdata", "cluster-fritz.json"),
 | 
			
		||||
		filepath.Join(fritzArchive, "cluster.json")); err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dbfilepath := filepath.Join(tmpdir, "test.db")
 | 
			
		||||
	err := repository.MigrateDB("sqlite3", dbfilepath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cfgFilePath := filepath.Join(tmpdir, "config.json")
 | 
			
		||||
	if err := os.WriteFile(cfgFilePath, []byte(testconfig), 0666); err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	config.Init(cfgFilePath)
 | 
			
		||||
	archiveCfg := fmt.Sprintf("{\"kind\": \"file\",\"path\": \"%s\"}", jobarchive)
 | 
			
		||||
 | 
			
		||||
	if err := archive.Init(json.RawMessage(archiveCfg), config.Keys.DisableArchive); err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	repository.Connect("sqlite3", dbfilepath)
 | 
			
		||||
	return repository.GetJobRepository()
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										746
									
								
								internal/repository_test/testdata/cluster-fritz.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										746
									
								
								internal/repository_test/testdata/cluster-fritz.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,746 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "fritz",
 | 
			
		||||
    "metricConfig": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "cpu_load",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": ""
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "node",
 | 
			
		||||
            "aggregation": "avg",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 72,
 | 
			
		||||
            "normal": 72,
 | 
			
		||||
            "caution": 36,
 | 
			
		||||
            "alert": 20
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "cpu_user",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": ""
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "hwthread",
 | 
			
		||||
            "aggregation": "avg",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 100,
 | 
			
		||||
            "normal": 50,
 | 
			
		||||
            "caution": 20,
 | 
			
		||||
            "alert": 10
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "mem_used",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "B",
 | 
			
		||||
                "prefix": "G"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "node",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 256,
 | 
			
		||||
            "normal": 128,
 | 
			
		||||
            "caution": 200,
 | 
			
		||||
            "alert": 240
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "flops_any",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "F/s",
 | 
			
		||||
                "prefix": "G"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "hwthread",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 5600,
 | 
			
		||||
            "normal": 1000,
 | 
			
		||||
            "caution": 200,
 | 
			
		||||
            "alert": 50
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "flops_sp",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "F/s",
 | 
			
		||||
                "prefix": "G"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "hwthread",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 5600,
 | 
			
		||||
            "normal": 1000,
 | 
			
		||||
            "caution": 200,
 | 
			
		||||
            "alert": 50
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "flops_dp",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "F/s",
 | 
			
		||||
                "prefix": "G"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "hwthread",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 2300,
 | 
			
		||||
            "normal": 500,
 | 
			
		||||
            "caution": 100,
 | 
			
		||||
            "alert": 50
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "mem_bw",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "B/s",
 | 
			
		||||
                "prefix": "G"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "socket",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 350,
 | 
			
		||||
            "normal": 100,
 | 
			
		||||
            "caution": 50,
 | 
			
		||||
            "alert": 10
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "clock",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "Hz",
 | 
			
		||||
                "prefix": "M"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "hwthread",
 | 
			
		||||
            "aggregation": "avg",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 3000,
 | 
			
		||||
            "normal": 2400,
 | 
			
		||||
            "caution": 1800,
 | 
			
		||||
            "alert": 1200
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "cpu_power",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "W"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "socket",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 500,
 | 
			
		||||
            "normal": 250,
 | 
			
		||||
            "caution": 100,
 | 
			
		||||
            "alert": 50
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "mem_power",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "W"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "socket",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 100,
 | 
			
		||||
            "normal": 50,
 | 
			
		||||
            "caution": 20,
 | 
			
		||||
            "alert": 10
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "ipc",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "IPC"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "hwthread",
 | 
			
		||||
            "aggregation": "avg",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 4,
 | 
			
		||||
            "normal": 2,
 | 
			
		||||
            "caution": 1,
 | 
			
		||||
            "alert": 0.5
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "vectorization_ratio",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": ""
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "hwthread",
 | 
			
		||||
            "aggregation": "avg",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 100,
 | 
			
		||||
            "normal": 60,
 | 
			
		||||
            "caution": 40,
 | 
			
		||||
            "alert": 10
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "ib_recv",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "B/s"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "node",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 1250000,
 | 
			
		||||
            "normal": 6000000,
 | 
			
		||||
            "caution": 200,
 | 
			
		||||
            "alert": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "ib_xmit",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "B/s"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "node",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 1250000,
 | 
			
		||||
            "normal": 6000000,
 | 
			
		||||
            "caution": 200,
 | 
			
		||||
            "alert": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "ib_recv_pkts",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": ""
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "node",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 6,
 | 
			
		||||
            "normal": 4,
 | 
			
		||||
            "caution": 2,
 | 
			
		||||
            "alert": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "ib_xmit_pkts",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": ""
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "node",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 6,
 | 
			
		||||
            "normal": 4,
 | 
			
		||||
            "caution": 2,
 | 
			
		||||
            "alert": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "nfs4_read",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "B/s",
 | 
			
		||||
                "prefix": "M"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "node",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 6,
 | 
			
		||||
            "normal": 4,
 | 
			
		||||
            "caution": 2,
 | 
			
		||||
            "alert": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "nfs4_write",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "B/s",
 | 
			
		||||
                "prefix": "M"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "node",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 6,
 | 
			
		||||
            "normal": 4,
 | 
			
		||||
            "caution": 2,
 | 
			
		||||
            "alert": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "nfs4_total",
 | 
			
		||||
            "unit": {
 | 
			
		||||
                "base": "B/s",
 | 
			
		||||
                "prefix": "M"
 | 
			
		||||
            },
 | 
			
		||||
            "scope": "node",
 | 
			
		||||
            "aggregation": "sum",
 | 
			
		||||
            "timestep": 60,
 | 
			
		||||
            "peak": 6,
 | 
			
		||||
            "normal": 4,
 | 
			
		||||
            "caution": 2,
 | 
			
		||||
            "alert": 1
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "subClusters": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "main",
 | 
			
		||||
            "nodes": "f01[01-88],f02[01-88],f03[01-88],f03[01-88],f04[01-88],f05[01-88],f06[01-88],f07[01-88],f08[01-88],f09[01-88],f10[01-88],f11[01-56],f12[01-56]",
 | 
			
		||||
            "processorType": "Intel Icelake",
 | 
			
		||||
            "socketsPerNode": 2,
 | 
			
		||||
            "coresPerSocket": 36,
 | 
			
		||||
            "threadsPerCore": 1,
 | 
			
		||||
            "flopRateScalar": {
 | 
			
		||||
                "unit": {
 | 
			
		||||
                    "base": "F/s",
 | 
			
		||||
                    "prefix": "G"
 | 
			
		||||
                },
 | 
			
		||||
                "value": 432
 | 
			
		||||
            },
 | 
			
		||||
            "flopRateSimd": {
 | 
			
		||||
                "unit": {
 | 
			
		||||
                    "base": "F/s",
 | 
			
		||||
                    "prefix": "G"
 | 
			
		||||
                },
 | 
			
		||||
                "value": 9216
 | 
			
		||||
            },
 | 
			
		||||
            "memoryBandwidth": {
 | 
			
		||||
                "unit": {
 | 
			
		||||
                    "base": "B/s",
 | 
			
		||||
                    "prefix": "G"
 | 
			
		||||
                },
 | 
			
		||||
                "value": 350
 | 
			
		||||
            },
 | 
			
		||||
            "topology": {
 | 
			
		||||
                "node": [
 | 
			
		||||
                    0,
 | 
			
		||||
                    1,
 | 
			
		||||
                    2,
 | 
			
		||||
                    3,
 | 
			
		||||
                    4,
 | 
			
		||||
                    5,
 | 
			
		||||
                    6,
 | 
			
		||||
                    7,
 | 
			
		||||
                    8,
 | 
			
		||||
                    9,
 | 
			
		||||
                    10,
 | 
			
		||||
                    11,
 | 
			
		||||
                    12,
 | 
			
		||||
                    13,
 | 
			
		||||
                    14,
 | 
			
		||||
                    15,
 | 
			
		||||
                    16,
 | 
			
		||||
                    17,
 | 
			
		||||
                    18,
 | 
			
		||||
                    19,
 | 
			
		||||
                    20,
 | 
			
		||||
                    21,
 | 
			
		||||
                    22,
 | 
			
		||||
                    23,
 | 
			
		||||
                    24,
 | 
			
		||||
                    25,
 | 
			
		||||
                    26,
 | 
			
		||||
                    27,
 | 
			
		||||
                    28,
 | 
			
		||||
                    29,
 | 
			
		||||
                    30,
 | 
			
		||||
                    31,
 | 
			
		||||
                    32,
 | 
			
		||||
                    33,
 | 
			
		||||
                    34,
 | 
			
		||||
                    35,
 | 
			
		||||
                    36,
 | 
			
		||||
                    37,
 | 
			
		||||
                    38,
 | 
			
		||||
                    39,
 | 
			
		||||
                    40,
 | 
			
		||||
                    41,
 | 
			
		||||
                    42,
 | 
			
		||||
                    43,
 | 
			
		||||
                    44,
 | 
			
		||||
                    45,
 | 
			
		||||
                    46,
 | 
			
		||||
                    47,
 | 
			
		||||
                    48,
 | 
			
		||||
                    49,
 | 
			
		||||
                    50,
 | 
			
		||||
                    51,
 | 
			
		||||
                    52,
 | 
			
		||||
                    53,
 | 
			
		||||
                    54,
 | 
			
		||||
                    55,
 | 
			
		||||
                    56,
 | 
			
		||||
                    57,
 | 
			
		||||
                    58,
 | 
			
		||||
                    59,
 | 
			
		||||
                    60,
 | 
			
		||||
                    61,
 | 
			
		||||
                    62,
 | 
			
		||||
                    63,
 | 
			
		||||
                    64,
 | 
			
		||||
                    65,
 | 
			
		||||
                    66,
 | 
			
		||||
                    67,
 | 
			
		||||
                    68,
 | 
			
		||||
                    69,
 | 
			
		||||
                    70,
 | 
			
		||||
                    71
 | 
			
		||||
                ],
 | 
			
		||||
                "socket": [
 | 
			
		||||
                    [
 | 
			
		||||
                        0,
 | 
			
		||||
                        1,
 | 
			
		||||
                        2,
 | 
			
		||||
                        3,
 | 
			
		||||
                        4,
 | 
			
		||||
                        5,
 | 
			
		||||
                        6,
 | 
			
		||||
                        7,
 | 
			
		||||
                        8,
 | 
			
		||||
                        9,
 | 
			
		||||
                        10,
 | 
			
		||||
                        11,
 | 
			
		||||
                        12,
 | 
			
		||||
                        13,
 | 
			
		||||
                        14,
 | 
			
		||||
                        15,
 | 
			
		||||
                        16,
 | 
			
		||||
                        17,
 | 
			
		||||
                        18,
 | 
			
		||||
                        19,
 | 
			
		||||
                        20,
 | 
			
		||||
                        21,
 | 
			
		||||
                        22,
 | 
			
		||||
                        23,
 | 
			
		||||
                        24,
 | 
			
		||||
                        25,
 | 
			
		||||
                        26,
 | 
			
		||||
                        27,
 | 
			
		||||
                        28,
 | 
			
		||||
                        29,
 | 
			
		||||
                        30,
 | 
			
		||||
                        31,
 | 
			
		||||
                        32,
 | 
			
		||||
                        33,
 | 
			
		||||
                        34,
 | 
			
		||||
                        35
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        36,
 | 
			
		||||
                        37,
 | 
			
		||||
                        38,
 | 
			
		||||
                        39,
 | 
			
		||||
                        40,
 | 
			
		||||
                        41,
 | 
			
		||||
                        42,
 | 
			
		||||
                        43,
 | 
			
		||||
                        44,
 | 
			
		||||
                        45,
 | 
			
		||||
                        46,
 | 
			
		||||
                        47,
 | 
			
		||||
                        48,
 | 
			
		||||
                        49,
 | 
			
		||||
                        50,
 | 
			
		||||
                        51,
 | 
			
		||||
                        52,
 | 
			
		||||
                        53,
 | 
			
		||||
                        54,
 | 
			
		||||
                        55,
 | 
			
		||||
                        56,
 | 
			
		||||
                        57,
 | 
			
		||||
                        58,
 | 
			
		||||
                        59,
 | 
			
		||||
                        60,
 | 
			
		||||
                        61,
 | 
			
		||||
                        62,
 | 
			
		||||
                        63,
 | 
			
		||||
                        64,
 | 
			
		||||
                        65,
 | 
			
		||||
                        66,
 | 
			
		||||
                        67,
 | 
			
		||||
                        68,
 | 
			
		||||
                        69,
 | 
			
		||||
                        70,
 | 
			
		||||
                        71
 | 
			
		||||
                    ]
 | 
			
		||||
                ],
 | 
			
		||||
                "memoryDomain": [
 | 
			
		||||
                    [
 | 
			
		||||
                        0,
 | 
			
		||||
                        1,
 | 
			
		||||
                        2,
 | 
			
		||||
                        3,
 | 
			
		||||
                        4,
 | 
			
		||||
                        5,
 | 
			
		||||
                        6,
 | 
			
		||||
                        7,
 | 
			
		||||
                        8,
 | 
			
		||||
                        9,
 | 
			
		||||
                        10,
 | 
			
		||||
                        11,
 | 
			
		||||
                        12,
 | 
			
		||||
                        13,
 | 
			
		||||
                        14,
 | 
			
		||||
                        15,
 | 
			
		||||
                        16,
 | 
			
		||||
                        17
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        18,
 | 
			
		||||
                        19,
 | 
			
		||||
                        20,
 | 
			
		||||
                        21,
 | 
			
		||||
                        22,
 | 
			
		||||
                        23,
 | 
			
		||||
                        24,
 | 
			
		||||
                        25,
 | 
			
		||||
                        26,
 | 
			
		||||
                        27,
 | 
			
		||||
                        28,
 | 
			
		||||
                        29,
 | 
			
		||||
                        30,
 | 
			
		||||
                        31,
 | 
			
		||||
                        32,
 | 
			
		||||
                        33,
 | 
			
		||||
                        34,
 | 
			
		||||
                        35
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        36,
 | 
			
		||||
                        37,
 | 
			
		||||
                        38,
 | 
			
		||||
                        39,
 | 
			
		||||
                        40,
 | 
			
		||||
                        41,
 | 
			
		||||
                        42,
 | 
			
		||||
                        43,
 | 
			
		||||
                        44,
 | 
			
		||||
                        45,
 | 
			
		||||
                        46,
 | 
			
		||||
                        47,
 | 
			
		||||
                        48,
 | 
			
		||||
                        49,
 | 
			
		||||
                        50,
 | 
			
		||||
                        51,
 | 
			
		||||
                        52,
 | 
			
		||||
                        53
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        54,
 | 
			
		||||
                        55,
 | 
			
		||||
                        56,
 | 
			
		||||
                        57,
 | 
			
		||||
                        58,
 | 
			
		||||
                        59,
 | 
			
		||||
                        60,
 | 
			
		||||
                        61,
 | 
			
		||||
                        62,
 | 
			
		||||
                        63,
 | 
			
		||||
                        64,
 | 
			
		||||
                        65,
 | 
			
		||||
                        66,
 | 
			
		||||
                        67,
 | 
			
		||||
                        68,
 | 
			
		||||
                        69,
 | 
			
		||||
                        70,
 | 
			
		||||
                        71
 | 
			
		||||
                    ]
 | 
			
		||||
                ],
 | 
			
		||||
                "core": [
 | 
			
		||||
                    [
 | 
			
		||||
                        0
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        1
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        2
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        3
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        4
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        5
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        6
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        7
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        8
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        9
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        10
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        11
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        12
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        13
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        14
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        15
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        16
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        17
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        18
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        19
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        20
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        21
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        22
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        23
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        24
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        25
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        26
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        27
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        28
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        29
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        30
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        31
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        32
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        33
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        34
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        35
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        36
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        37
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        38
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        39
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        40
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        41
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        42
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        43
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        44
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        45
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        46
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        47
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        48
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        49
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        50
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        51
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        52
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        53
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        54
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        55
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        56
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        57
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        58
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        59
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        60
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        61
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        62
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        63
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        64
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        65
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        66
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        67
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        68
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        69
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        70
 | 
			
		||||
                    ],
 | 
			
		||||
                    [
 | 
			
		||||
                        71
 | 
			
		||||
                    ]
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -96,7 +96,7 @@ var JobDefaults BaseJob = BaseJob{
 | 
			
		||||
 | 
			
		||||
type Unit struct {
 | 
			
		||||
	Base   string `json:"base"`
 | 
			
		||||
	Prefix *string `json:"prefix,omitempty"`
 | 
			
		||||
	Prefix string `json:"prefix,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// JobStatistics model
 | 
			
		||||
 
 | 
			
		||||
@@ -147,7 +147,7 @@ func ConvertUnitString(us string) schema.Unit {
 | 
			
		||||
	p := u.getPrefix()
 | 
			
		||||
	if p.Prefix() != "" {
 | 
			
		||||
		prefix := p.Prefix()
 | 
			
		||||
		nu.Prefix = &prefix
 | 
			
		||||
		nu.Prefix = prefix
 | 
			
		||||
	}
 | 
			
		||||
	m := u.getMeasure()
 | 
			
		||||
	d := u.getUnitDenominator()
 | 
			
		||||
 
 | 
			
		||||
@@ -228,80 +228,80 @@ func TestConvertSeries(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestNormalizeValue(t *testing.T) {
 | 
			
		||||
	var s string
 | 
			
		||||
	v := float64(103456)
 | 
			
		||||
 | 
			
		||||
	NormalizeValue(&v, "MB/s", &s)
 | 
			
		||||
 | 
			
		||||
	if v != 104.00 {
 | 
			
		||||
		t.Errorf("Failed ConvertValue: Want 104.00, Got %f", v)
 | 
			
		||||
	}
 | 
			
		||||
	if s != "GB/s" {
 | 
			
		||||
		t.Errorf("Failed Prefix or unit: Want GB/s, Got %s", s)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestNormalizeValueNoPrefix(t *testing.T) {
 | 
			
		||||
	var s string
 | 
			
		||||
	v := float64(103458596)
 | 
			
		||||
 | 
			
		||||
	NormalizeValue(&v, "F/s", &s)
 | 
			
		||||
 | 
			
		||||
	if v != 104.00 {
 | 
			
		||||
		t.Errorf("Failed ConvertValue: Want 104.00, Got %f", v)
 | 
			
		||||
	}
 | 
			
		||||
	if s != "MF/s" {
 | 
			
		||||
		t.Errorf("Failed Prefix or unit: Want MF/s, Got %s", s)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestNormalizeValueKeep(t *testing.T) {
 | 
			
		||||
	var s string
 | 
			
		||||
	v := float64(345)
 | 
			
		||||
 | 
			
		||||
	NormalizeValue(&v, "MB/s", &s)
 | 
			
		||||
 | 
			
		||||
	if v != 345.00 {
 | 
			
		||||
		t.Errorf("Failed ConvertValue: Want 104.00, Got %f", v)
 | 
			
		||||
	}
 | 
			
		||||
	if s != "MB/s" {
 | 
			
		||||
		t.Errorf("Failed Prefix or unit: Want GB/s, Got %s", s)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestNormalizeValueDown(t *testing.T) {
 | 
			
		||||
	var s string
 | 
			
		||||
	v := float64(0.0004578)
 | 
			
		||||
 | 
			
		||||
	NormalizeValue(&v, "GB/s", &s)
 | 
			
		||||
 | 
			
		||||
	if v != 458.00 {
 | 
			
		||||
		t.Errorf("Failed ConvertValue: Want 458.00, Got %f", v)
 | 
			
		||||
	}
 | 
			
		||||
	if s != "KB/s" {
 | 
			
		||||
		t.Errorf("Failed Prefix or unit: Want KB/s, Got %s", s)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestNormalizeSeries(t *testing.T) {
 | 
			
		||||
	var us string
 | 
			
		||||
	s := []float64{2890031237, 23998994567, 389734042344, 390349424345}
 | 
			
		||||
	r := []float64{3, 24, 390, 391}
 | 
			
		||||
 | 
			
		||||
	total := 0.0
 | 
			
		||||
	for _, number := range s {
 | 
			
		||||
		total += number
 | 
			
		||||
	}
 | 
			
		||||
	avg := total / float64(len(s))
 | 
			
		||||
 | 
			
		||||
	fmt.Printf("AVG: %e\n", avg)
 | 
			
		||||
	NormalizeSeries(s, avg, "KB/s", &us)
 | 
			
		||||
 | 
			
		||||
	if !reflect.DeepEqual(s, r) {
 | 
			
		||||
		t.Errorf("Failed ConvertValue: Want 3, 24, 390, 391, Got %v", s)
 | 
			
		||||
	}
 | 
			
		||||
	if us != "TB/s" {
 | 
			
		||||
		t.Errorf("Failed Prefix or unit: Want TB/s, Got %s", us)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
// func TestNormalizeValue(t *testing.T) {
 | 
			
		||||
// 	var s string
 | 
			
		||||
// 	v := float64(103456)
 | 
			
		||||
//
 | 
			
		||||
// 	NormalizeValue(&v, "MB/s", &s)
 | 
			
		||||
//
 | 
			
		||||
// 	if v != 104.00 {
 | 
			
		||||
// 		t.Errorf("Failed ConvertValue: Want 104.00, Got %f", v)
 | 
			
		||||
// 	}
 | 
			
		||||
// 	if s != "GB/s" {
 | 
			
		||||
// 		t.Errorf("Failed Prefix or unit: Want GB/s, Got %s", s)
 | 
			
		||||
// 	}
 | 
			
		||||
// }
 | 
			
		||||
//
 | 
			
		||||
// func TestNormalizeValueNoPrefix(t *testing.T) {
 | 
			
		||||
// 	var s string
 | 
			
		||||
// 	v := float64(103458596)
 | 
			
		||||
//
 | 
			
		||||
// 	NormalizeValue(&v, "F/s", &s)
 | 
			
		||||
//
 | 
			
		||||
// 	if v != 104.00 {
 | 
			
		||||
// 		t.Errorf("Failed ConvertValue: Want 104.00, Got %f", v)
 | 
			
		||||
// 	}
 | 
			
		||||
// 	if s != "MF/s" {
 | 
			
		||||
// 		t.Errorf("Failed Prefix or unit: Want MF/s, Got %s", s)
 | 
			
		||||
// 	}
 | 
			
		||||
// }
 | 
			
		||||
//
 | 
			
		||||
// func TestNormalizeValueKeep(t *testing.T) {
 | 
			
		||||
// 	var s string
 | 
			
		||||
// 	v := float64(345)
 | 
			
		||||
//
 | 
			
		||||
// 	NormalizeValue(&v, "MB/s", &s)
 | 
			
		||||
//
 | 
			
		||||
// 	if v != 345.00 {
 | 
			
		||||
// 		t.Errorf("Failed ConvertValue: Want 104.00, Got %f", v)
 | 
			
		||||
// 	}
 | 
			
		||||
// 	if s != "MB/s" {
 | 
			
		||||
// 		t.Errorf("Failed Prefix or unit: Want GB/s, Got %s", s)
 | 
			
		||||
// 	}
 | 
			
		||||
// }
 | 
			
		||||
//
 | 
			
		||||
// func TestNormalizeValueDown(t *testing.T) {
 | 
			
		||||
// 	var s string
 | 
			
		||||
// 	v := float64(0.0004578)
 | 
			
		||||
//
 | 
			
		||||
// 	NormalizeValue(&v, "GB/s", &s)
 | 
			
		||||
//
 | 
			
		||||
// 	if v != 458.00 {
 | 
			
		||||
// 		t.Errorf("Failed ConvertValue: Want 458.00, Got %f", v)
 | 
			
		||||
// 	}
 | 
			
		||||
// 	if s != "KB/s" {
 | 
			
		||||
// 		t.Errorf("Failed Prefix or unit: Want KB/s, Got %s", s)
 | 
			
		||||
// 	}
 | 
			
		||||
// }
 | 
			
		||||
//
 | 
			
		||||
// func TestNormalizeSeries(t *testing.T) {
 | 
			
		||||
// 	var us string
 | 
			
		||||
// 	s := []float64{2890031237, 23998994567, 389734042344, 390349424345}
 | 
			
		||||
// 	r := []float64{3, 24, 390, 391}
 | 
			
		||||
//
 | 
			
		||||
// 	total := 0.0
 | 
			
		||||
// 	for _, number := range s {
 | 
			
		||||
// 		total += number
 | 
			
		||||
// 	}
 | 
			
		||||
// 	avg := total / float64(len(s))
 | 
			
		||||
//
 | 
			
		||||
// 	fmt.Printf("AVG: %e\n", avg)
 | 
			
		||||
// 	NormalizeSeries(s, avg, "KB/s", &us)
 | 
			
		||||
//
 | 
			
		||||
// 	if !reflect.DeepEqual(s, r) {
 | 
			
		||||
// 		t.Errorf("Failed ConvertValue: Want 3, 24, 390, 391, Got %v", s)
 | 
			
		||||
// 	}
 | 
			
		||||
// 	if us != "TB/s" {
 | 
			
		||||
// 		t.Errorf("Failed Prefix or unit: Want TB/s, Got %s", us)
 | 
			
		||||
// 	}
 | 
			
		||||
// }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,7 @@
 | 
			
		||||
// Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
 | 
			
		||||
// All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
package test
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
 
 | 
			
		||||
@@ -174,16 +174,14 @@ func deepCopyClusterConfig(co *Cluster) schema.Cluster {
 | 
			
		||||
		scn.SocketsPerNode = sco.SocketsPerNode
 | 
			
		||||
		scn.CoresPerSocket = sco.CoresPerSocket
 | 
			
		||||
		scn.ThreadsPerCore = sco.ThreadsPerCore
 | 
			
		||||
		var prefix = new(string)
 | 
			
		||||
		*prefix = "G"
 | 
			
		||||
		scn.FlopRateScalar = schema.MetricValue{
 | 
			
		||||
			Unit:  schema.Unit{Base: "F/s", Prefix: prefix},
 | 
			
		||||
			Unit:  schema.Unit{Base: "F/s", Prefix: "G"},
 | 
			
		||||
			Value: float64(sco.FlopRateScalar)}
 | 
			
		||||
		scn.FlopRateSimd = schema.MetricValue{
 | 
			
		||||
			Unit:  schema.Unit{Base: "F/s", Prefix: prefix},
 | 
			
		||||
			Unit:  schema.Unit{Base: "F/s", Prefix: "G"},
 | 
			
		||||
			Value: float64(sco.FlopRateSimd)}
 | 
			
		||||
		scn.MemoryBandwidth = schema.MetricValue{
 | 
			
		||||
			Unit:  schema.Unit{Base: "B/s", Prefix: prefix},
 | 
			
		||||
			Unit:  schema.Unit{Base: "B/s", Prefix: "G"},
 | 
			
		||||
			Value: float64(sco.MemoryBandwidth)}
 | 
			
		||||
		scn.Topology = *sco.Topology
 | 
			
		||||
		cn.SubClusters = append(cn.SubClusters, &scn)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user