latency_config.go 1.07 KB
Newer Older
Jeromy's avatar
Jeromy committed
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
package testutil

import "time"

type LatencyConfig struct {
	BlockstoreLatency time.Duration
	NetworkLatency    time.Duration
	RoutingLatency    time.Duration
}

func (c LatencyConfig) AllInstantaneous() LatencyConfig {
	// Could use a zero value but whatever. Consistency of interface
	c.NetworkLatency = 0
	c.RoutingLatency = 0
	c.BlockstoreLatency = 0
	return c
}

func (c LatencyConfig) NetworkNYtoSF() LatencyConfig {
	c.NetworkLatency = 20 * time.Millisecond
	return c
}

func (c LatencyConfig) NetworkIntraDatacenter2014() LatencyConfig {
	c.NetworkLatency = 250 * time.Microsecond
	return c
}

func (c LatencyConfig) BlockstoreFastSSD2014() LatencyConfig {
	const iops = 100000
	c.BlockstoreLatency = (1 / iops) * time.Second
	return c
}

func (c LatencyConfig) BlockstoreSlowSSD2014() LatencyConfig {
	c.BlockstoreLatency = 150 * time.Microsecond
	return c
}

func (c LatencyConfig) Blockstore7200RPM() LatencyConfig {
	c.BlockstoreLatency = 8 * time.Millisecond
	return c
}

func (c LatencyConfig) RoutingSlow() LatencyConfig {
	c.RoutingLatency = 200 * time.Millisecond
	return c
}