forked from canonical/lxd
/
idmapset_test_linux.go
92 lines (73 loc) · 2.48 KB
/
idmapset_test_linux.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package shared
import (
"fmt"
"testing"
)
func TestIdmapSetAddSafe_split(t *testing.T) {
orig := IdmapSet{Idmap: []IdmapEntry{IdmapEntry{Isuid: true, Hostid: 1000, Nsid: 0, Maprange: 1000}}}
if err := orig.AddSafe(IdmapEntry{Isuid: true, Hostid: 500, Nsid: 500, Maprange: 10}); err != nil {
t.Error(err)
return
}
if orig.Idmap[0].Hostid != 1000 || orig.Idmap[0].Nsid != 0 || orig.Idmap[0].Maprange != 500 {
t.Error(fmt.Errorf("bad range: %v", orig.Idmap[0]))
return
}
if orig.Idmap[1].Hostid != 500 || orig.Idmap[1].Nsid != 500 || orig.Idmap[1].Maprange != 10 {
t.Error(fmt.Errorf("bad range: %v", orig.Idmap[1]))
return
}
if orig.Idmap[2].Hostid != 1510 || orig.Idmap[2].Nsid != 510 || orig.Idmap[2].Maprange != 490 {
t.Error(fmt.Errorf("bad range: %v", orig.Idmap[2]))
return
}
if len(orig.Idmap) != 3 {
t.Error("too many idmap entries")
return
}
}
func TestIdmapSetAddSafe_lower(t *testing.T) {
orig := IdmapSet{Idmap: []IdmapEntry{IdmapEntry{Isuid: true, Hostid: 1000, Nsid: 0, Maprange: 1000}}}
if err := orig.AddSafe(IdmapEntry{Isuid: true, Hostid: 500, Nsid: 0, Maprange: 10}); err != nil {
t.Error(err)
return
}
if orig.Idmap[0].Hostid != 500 || orig.Idmap[0].Nsid != 0 || orig.Idmap[0].Maprange != 10 {
t.Error(fmt.Errorf("bad range: %v", orig.Idmap[0]))
return
}
if orig.Idmap[1].Hostid != 1010 || orig.Idmap[1].Nsid != 10 || orig.Idmap[1].Maprange != 990 {
t.Error(fmt.Errorf("bad range: %v", orig.Idmap[1]))
return
}
if len(orig.Idmap) != 2 {
t.Error("too many idmap entries")
return
}
}
func TestIdmapSetAddSafe_upper(t *testing.T) {
orig := IdmapSet{Idmap: []IdmapEntry{IdmapEntry{Isuid: true, Hostid: 1000, Nsid: 0, Maprange: 1000}}}
if err := orig.AddSafe(IdmapEntry{Isuid: true, Hostid: 500, Nsid: 995, Maprange: 10}); err != nil {
t.Error(err)
return
}
if orig.Idmap[0].Hostid != 1000 || orig.Idmap[0].Nsid != 0 || orig.Idmap[0].Maprange != 995 {
t.Error(fmt.Errorf("bad range: %v", orig.Idmap[0]))
return
}
if orig.Idmap[1].Hostid != 500 || orig.Idmap[1].Nsid != 995 || orig.Idmap[1].Maprange != 10 {
t.Error(fmt.Errorf("bad range: %v", orig.Idmap[1]))
return
}
if len(orig.Idmap) != 2 {
t.Error("too many idmap entries")
return
}
}
func TestIdmapSetIntersects(t *testing.T) {
orig := IdmapSet{Idmap: []IdmapEntry{IdmapEntry{Isuid: true, Hostid: 165536, Nsid: 0, Maprange: 65536}}}
if orig.Intersects(IdmapEntry{Isuid: true, Hostid: 231072, Nsid: 0, Maprange: 65536}) {
t.Error("ranges don't intersect")
return
}
}