mirror of
https://github.com/libp2p/go-libp2p-resource-manager.git
synced 2026-08-22 19:43:28 +08:00
basic resource scope tests
This commit is contained in:
189
scope_test.go
189
scope_test.go
@@ -179,3 +179,192 @@ func TestResources(t *testing.T) {
|
||||
rc.removeFD(1)
|
||||
checkResources(t, rc, network.ScopeStat{})
|
||||
}
|
||||
|
||||
func TestResourceScopeBasic(t *testing.T) {
|
||||
s := NewResourceScope(
|
||||
&StaticLimit{
|
||||
Memory: 4096,
|
||||
StreamsInbound: 1,
|
||||
StreamsOutbound: 1,
|
||||
ConnsInbound: 1,
|
||||
ConnsOutbound: 1,
|
||||
FD: 1,
|
||||
},
|
||||
nil,
|
||||
)
|
||||
|
||||
s.IncRef()
|
||||
if s.refCnt != 1 {
|
||||
t.Fatal("expected refcnt of 1")
|
||||
}
|
||||
s.DecRef()
|
||||
if s.refCnt != 0 {
|
||||
t.Fatal("expected refcnt of 0")
|
||||
}
|
||||
|
||||
if err := s.ReserveMemory(2048); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{Memory: 2048})
|
||||
|
||||
if err := s.ReserveMemory(2048); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{Memory: 4096})
|
||||
|
||||
if err := s.ReserveMemory(1024); err == nil {
|
||||
t.Fatal("expected ReserveMemory to fail")
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{Memory: 4096})
|
||||
|
||||
s.ReleaseMemory(4096)
|
||||
checkResources(t, s.rc, network.ScopeStat{})
|
||||
|
||||
if err := s.AddStream(network.DirInbound); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumStreamsInbound: 1})
|
||||
|
||||
if err := s.AddStream(network.DirInbound); err == nil {
|
||||
t.Fatal("expected AddStream to fail")
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumStreamsInbound: 1})
|
||||
|
||||
s.RemoveStream(network.DirInbound)
|
||||
checkResources(t, s.rc, network.ScopeStat{})
|
||||
|
||||
if err := s.AddStream(network.DirOutbound); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumStreamsOutbound: 1})
|
||||
|
||||
if err := s.AddStream(network.DirOutbound); err == nil {
|
||||
t.Fatal("expected AddStream to fail")
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumStreamsOutbound: 1})
|
||||
|
||||
s.RemoveStream(network.DirOutbound)
|
||||
checkResources(t, s.rc, network.ScopeStat{})
|
||||
|
||||
if err := s.AddConn(network.DirInbound); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumConnsInbound: 1})
|
||||
|
||||
if err := s.AddConn(network.DirInbound); err == nil {
|
||||
t.Fatal("expected AddConn to fail")
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumConnsInbound: 1})
|
||||
|
||||
s.RemoveConn(network.DirInbound)
|
||||
checkResources(t, s.rc, network.ScopeStat{})
|
||||
|
||||
if err := s.AddConn(network.DirOutbound); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumConnsOutbound: 1})
|
||||
|
||||
if err := s.AddConn(network.DirOutbound); err == nil {
|
||||
t.Fatal("expected AddConn to fail")
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumConnsOutbound: 1})
|
||||
|
||||
s.RemoveConn(network.DirOutbound)
|
||||
checkResources(t, s.rc, network.ScopeStat{})
|
||||
|
||||
if err := s.AddFD(1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumFD: 1})
|
||||
|
||||
if err := s.AddFD(1); err == nil {
|
||||
t.Fatal("expected AddFD to fail")
|
||||
}
|
||||
checkResources(t, s.rc, network.ScopeStat{NumFD: 1})
|
||||
|
||||
s.RemoveFD(1)
|
||||
checkResources(t, s.rc, network.ScopeStat{})
|
||||
}
|
||||
|
||||
func TestResourceScopeBuffer(t *testing.T) {
|
||||
s := NewResourceScope(
|
||||
&StaticLimit{
|
||||
Memory: 4096,
|
||||
StreamsInbound: 1,
|
||||
StreamsOutbound: 1,
|
||||
ConnsInbound: 1,
|
||||
ConnsOutbound: 1,
|
||||
FD: 1,
|
||||
},
|
||||
nil,
|
||||
)
|
||||
|
||||
buf, err := s.GetBuffer(2048)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(buf.Data()) != 2048 {
|
||||
t.Fatalf("expected buffer of length %d but got %d", 2048, len(buf.Data()))
|
||||
}
|
||||
if len(s.rc.buffers) != 1 {
|
||||
t.Fatalf("expected %d buffers to be tracked but got %d", 1, len(s.rc.buffers))
|
||||
}
|
||||
|
||||
if err = buf.Grow(4096); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(buf.Data()) != 4096 {
|
||||
t.Fatalf("expected buffer of length %d but got %d", 4096, len(buf.Data()))
|
||||
}
|
||||
if len(s.rc.buffers) != 1 {
|
||||
t.Fatalf("expected %d buffers to be tracked but got %d", 1, len(s.rc.buffers))
|
||||
}
|
||||
|
||||
if err = buf.Grow(8192); err == nil {
|
||||
t.Fatal("expected grow to fail")
|
||||
}
|
||||
if len(buf.Data()) != 4096 {
|
||||
t.Fatalf("expected buffer of length %d but got %d", 4096, len(buf.Data()))
|
||||
}
|
||||
if len(s.rc.buffers) != 1 {
|
||||
t.Fatalf("expected %d buffers to be tracked but got %d", 1, len(s.rc.buffers))
|
||||
}
|
||||
|
||||
buf.Release()
|
||||
if len(buf.Data()) != 0 {
|
||||
t.Fatalf("expected buffer of length %d but got %d", 0, len(buf.Data()))
|
||||
}
|
||||
if len(s.rc.buffers) != 0 {
|
||||
t.Fatalf("expected %d buffers to be tracked but got %d", 0, len(s.rc.buffers))
|
||||
}
|
||||
|
||||
buf1, err := s.GetBuffer(2048)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
buf2, err := s.GetBuffer(2048)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := s.GetBuffer(2048); err == nil {
|
||||
t.Fatal("expected GetBuffer to fail")
|
||||
}
|
||||
if len(s.rc.buffers) != 2 {
|
||||
t.Fatalf("expected %d buffers to be tracked but got %d", 2, len(s.rc.buffers))
|
||||
}
|
||||
|
||||
buf1.Release()
|
||||
buf3, err := s.GetBuffer(2048)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(s.rc.buffers) != 2 {
|
||||
t.Fatalf("expected %d buffers to be tracked but got %d", 2, len(s.rc.buffers))
|
||||
}
|
||||
|
||||
buf2.Release()
|
||||
buf3.Release()
|
||||
if len(s.rc.buffers) != 0 {
|
||||
t.Fatalf("expected %d buffers to be tracked but got %d", 0, len(s.rc.buffers))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user