-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathexample_test.go
62 lines (52 loc) · 1.48 KB
/
example_test.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
62
package boltrrd_test
import (
"fmt"
"os"
"time"
"github.com/geekbros/SHM-Backend/boltrrd"
)
func ExampleNewStorage() {
// Structure of storage:
// file_bolt.db
// |-bucket
// | |-entry_1
// | | |-data_storage1 - value
// | | |-data_storage2 - value
// | |-entry_2
// | | |-data_storage1 - value
// | | |-data_storage2 - value
// | |-info_entry
//Create bolt db file
stor, err := boltrrd.NewStorage("bolt.db")
defer func() {
stor.Close()
}()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
//Create new rrd storage-bucket
buckName := "Data" //Name of bucket
buckStep := 1 //Step in seconds
buckCapacity := 10 //Number of steps which can store in bucket
DSs := []string{"Val1", "Val2"} //Data storages
stor.NewRRD(buckName, buckStep, buckCapacity, DSs...)
stor.NewRRD("Network", 10, 6, "in", "out")
//Save data to storage
for i := 0; i < 10; i++ {
err := stor.RRD(buckName).Save(float64(i), float64(i*2)) // Number of parameters for .save() must be equal to number of data storages
if err != nil {
fmt.Println(err)
os.Exit(1)
}
time.Sleep(time.Duration(buckStep) * time.Second) // Every entry saves with parameter time.Now() so wait a second
}
//Get saved data
stat, err := stor.RRD(buckName).GetStats(time.Now().Add(-10*time.Second), time.Now(), buckStep)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(stat)
//Output: &{[{Val1 [0 1 2 3 4 5 6 7 8 9]} {Val2 [0 2 4 6 8 10 12 14 16 18]}]}
}