forked from influxdata/influxdb-comparisons
-
Notifications
You must be signed in to change notification settings - Fork 2
/
devops.go
61 lines (53 loc) · 1.38 KB
/
devops.go
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
package main
// Devops describes a devops query generator.
type Devops interface {
MaxCPUUsageHourByMinuteOneHost(Query, int)
MaxCPUUsageHourByMinuteTwoHosts(Query, int)
MaxCPUUsageHourByMinuteFourHosts(Query, int)
MaxCPUUsageHourByMinuteEightHosts(Query, int)
MaxCPUUsageHourByMinuteSixteenHosts(Query, int)
MaxCPUUsageHourByMinuteThirtyTwoHosts(Query, int)
MaxCPUUsageDayByHour(Query, int)
MaxCPUUsage12HoursByMinuteOneHost(Query, int)
MeanCPUUsageDayByHourAllHostsGroupbyHost(Query, int)
//CountCPUUsageDayByHourAllHostsGroupbyHost(Query, int)
Dispatch(int, int) Query
}
// devopsDispatchAll round-robins through the different devops queries.
func devopsDispatchAll(d Devops, iteration int, q Query, scaleVar int) {
if scaleVar <= 0 {
panic("logic error: bad scalevar")
}
mod := 1
if scaleVar >= 2 {
mod++
}
if scaleVar >= 4 {
mod++
}
if scaleVar >= 8 {
mod++
}
if scaleVar >= 16 {
mod++
}
if scaleVar >= 32 {
mod++
}
switch iteration % mod {
case 0:
d.MaxCPUUsageHourByMinuteOneHost(q, scaleVar)
case 1:
d.MaxCPUUsageHourByMinuteTwoHosts(q, scaleVar)
case 2:
d.MaxCPUUsageHourByMinuteFourHosts(q, scaleVar)
case 3:
d.MaxCPUUsageHourByMinuteEightHosts(q, scaleVar)
case 4:
d.MaxCPUUsageHourByMinuteSixteenHosts(q, scaleVar)
case 5:
d.MaxCPUUsageHourByMinuteThirtyTwoHosts(q, scaleVar)
default:
panic("logic error in switch statement")
}
}