本文整理匯總了Golang中github.com/openshift/origin/pkg/security/uid.NewRange函數的典型用法代碼示例。如果您正苦於以下問題:Golang NewRange函數的具體用法?Golang NewRange怎麽用?Golang NewRange使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了NewRange函數的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: TestControllerError
func TestControllerError(t *testing.T) {
testCases := map[string]struct {
err func() error
errFn func(err error) bool
reactFn testclient.ReactionFunc
actions int
}{
"not found": {
err: func() error { return errors.NewNotFound("namespace", "test") },
errFn: func(err error) bool { return err == nil },
actions: 1,
},
"unknown": {
err: func() error { return fmt.Errorf("unknown") },
errFn: func(err error) bool { return err.Error() == "unknown" },
actions: 1,
},
"conflict": {
actions: 4,
reactFn: func(a testclient.Action) (runtime.Object, error) {
if a.Matches("get", "namespaces") {
return &kapi.Namespace{ObjectMeta: kapi.ObjectMeta{Name: "test"}}, nil
}
return (*kapi.Namespace)(nil), errors.NewConflict("namespace", "test", fmt.Errorf("test conflict"))
},
errFn: func(err error) bool {
return err != nil && strings.Contains(err.Error(), "unable to allocate security info")
},
},
}
for s, testCase := range testCases {
client := &testclient.Fake{ReactFn: testCase.reactFn}
if client.ReactFn == nil {
client.ReactFn = func(a testclient.Action) (runtime.Object, error) {
return (*kapi.Namespace)(nil), testCase.err()
}
}
uidr, _ := uid.NewRange(10, 19, 2)
mcsr, _ := mcs.NewRange("s0:", 10, 2)
uida := uidallocator.NewInMemory(uidr)
c := Allocation{
uid: uida,
mcs: DefaultMCSAllocation(uidr, mcsr, 5),
client: client.Namespaces(),
}
err := c.Next(&kapi.Namespace{ObjectMeta: kapi.ObjectMeta{Name: "test"}})
if !testCase.errFn(err) {
t.Errorf("%s: unexpected error: %v", s, err)
}
if len(client.Actions()) != testCase.actions {
t.Errorf("%s: expected %d actions: %v", s, testCase.actions, client.Actions())
}
if uida.Free() != 5 {
t.Errorf("%s: should not have allocated uid: %d/%d", s, uida.Free(), uidr.Size())
}
}
}
示例2: TestController
func TestController(t *testing.T) {
var action testclient.Action
client := &testclient.Fake{
ReactFn: func(a testclient.Action) (runtime.Object, error) {
action = a
return (*kapi.Namespace)(nil), nil
},
}
uidr, _ := uid.NewRange(10, 20, 2)
mcsr, _ := mcs.NewRange("s0:", 10, 2)
uida := uidallocator.NewInMemory(uidr)
c := Allocation{
uid: uida,
mcs: DefaultMCSAllocation(uidr, mcsr, 5),
client: client.Namespaces(),
}
err := c.Next(&kapi.Namespace{ObjectMeta: kapi.ObjectMeta{Name: "test"}})
if err != nil {
t.Fatal(err)
}
got := action.(testclient.CreateAction).GetObject().(*kapi.Namespace)
if got.Annotations[security.UIDRangeAnnotation] != "10/2" {
t.Errorf("unexpected annotation: %#v", got)
}
if got.Annotations[security.MCSAnnotation] != "s0:c1,c0" {
t.Errorf("unexpected annotation: %#v", got)
}
if !uida.Has(uid.Block{Start: 10, End: 11}) {
t.Errorf("did not allocate uid: %#v", uida)
}
}
示例3: TestRepair
func TestRepair(t *testing.T) {
client := &fake.Clientset{}
client.AddReactor("*", "*", func(a core.Action) (bool, runtime.Object, error) {
list := &kapi.NamespaceList{
Items: []kapi.Namespace{
{ObjectMeta: kapi.ObjectMeta{Name: "default"}},
},
}
return true, list, nil
})
alloc := &fakeRange{
Range: &kapi.RangeAllocation{},
}
uidr, _ := uid.NewRange(10, 20, 2)
repair := NewRepair(0*time.Second, client.Core().Namespaces(), uidr, alloc)
err := repair.RunOnce()
if err != nil {
t.Fatal(err)
}
if alloc.Updated == nil {
t.Fatalf("did not store range: %#v", alloc)
}
if alloc.Updated.Range != "10-20/2" {
t.Errorf("didn't store range properly: %#v", alloc.Updated)
}
if len(alloc.Updated.Data) != 0 {
t.Errorf("data wasn't empty: %#v", alloc.Updated)
}
}
示例4: TestAllocate
func TestAllocate(t *testing.T) {
ranger, _ := uid.NewRange(0, 9, 2)
r := New(ranger, allocator.NewContiguousAllocationInterface)
if f := r.Free(); f != 5 {
t.Errorf("unexpected free %d", f)
}
found := util.NewStringSet()
count := 0
for r.Free() > 0 {
block, err := r.AllocateNext()
if err != nil {
t.Fatalf("error @ %d: %v", count, err)
}
count++
if !ranger.Contains(block) {
t.Fatalf("allocated %s which is outside of %s", block, ranger)
}
if found.Has(block.String()) {
t.Fatalf("allocated %s twice @ %d", block, count)
}
found.Insert(block.String())
}
if _, err := r.AllocateNext(); err != ErrFull {
t.Fatal(err)
}
released := uid.Block{2, 3}
if err := r.Release(released); err != nil {
t.Fatal(err)
}
if f := r.Free(); f != 1 {
t.Errorf("unexpected free %d", f)
}
block, err := r.AllocateNext()
if err != nil {
t.Fatal(err)
}
if released != block {
t.Errorf("unexpected %s : %s", block, released)
}
if err := r.Release(released); err != nil {
t.Fatal(err)
}
if err := r.Allocate(uid.Block{11, 11}); err != ErrNotInRange {
t.Fatal(err)
}
if err := r.Allocate(uid.Block{8, 11}); err != ErrNotInRange {
t.Fatal(err)
}
if f := r.Free(); f != 1 {
t.Errorf("unexpected free %d", f)
}
if err := r.Allocate(released); err != nil {
t.Fatal(err)
}
if f := r.Free(); f != 0 {
t.Errorf("unexpected free %d", f)
}
}
示例5: TestRepair
func TestRepair(t *testing.T) {
var action testclient.FakeAction
client := &testclient.Fake{
ReactFn: func(a testclient.FakeAction) (runtime.Object, error) {
action = a
list := &kapi.NamespaceList{
Items: []kapi.Namespace{
{ObjectMeta: kapi.ObjectMeta{Name: "default"}},
},
}
return list, nil
},
}
alloc := &fakeRange{
Range: &kapi.RangeAllocation{},
}
uidr, _ := uid.NewRange(10, 20, 2)
repair := NewRepair(0*time.Second, client.Namespaces(), uidr, alloc)
err := repair.RunOnce()
if err != nil {
t.Fatal(err)
}
if alloc.Updated == nil {
t.Fatalf("did not store range: %#v", alloc)
}
if alloc.Updated.Range != "10-20/2" {
t.Errorf("didn't store range properly: %#v", alloc.Updated)
}
if len(alloc.Updated.Data) != 0 {
t.Errorf("data wasn't empty: %#v", alloc.Updated)
}
}
示例6: TestController
func TestController(t *testing.T) {
var action core.Action
client := &fake.Clientset{}
client.AddReactor("*", "*", func(a core.Action) (handled bool, ret runtime.Object, err error) {
action = a
return true, (*kapi.Namespace)(nil), nil
})
uidr, _ := uid.NewRange(10, 20, 2)
mcsr, _ := mcs.NewRange("s0:", 10, 2)
uida := uidallocator.NewInMemory(uidr)
c := Allocation{
uid: uida,
mcs: DefaultMCSAllocation(uidr, mcsr, 5),
client: client.Core().Namespaces(),
}
err := c.Next(&kapi.Namespace{ObjectMeta: kapi.ObjectMeta{Name: "test"}})
if err != nil {
t.Fatal(err)
}
got := action.(core.CreateAction).GetObject().(*kapi.Namespace)
if got.Annotations[security.UIDRangeAnnotation] != "10/2" {
t.Errorf("unexpected uid annotation: %#v", got)
}
if got.Annotations[security.SupplementalGroupsAnnotation] != "10/2" {
t.Errorf("unexpected supplemental group annotation: %#v", got)
}
if got.Annotations[security.MCSAnnotation] != "s0:c1,c0" {
t.Errorf("unexpected mcs annotation: %#v", got)
}
if !uida.Has(uid.Block{Start: 10, End: 11}) {
t.Errorf("did not allocate uid: %#v", uida)
}
}