| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package virtqueue
- import (
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func TestUsedRing_MemoryLayout(t *testing.T) {
- const queueSize = 2
- memory := make([]byte, usedRingSize(queueSize))
- r := newUsedRing(queueSize, memory)
- *r.flags = 0x01ff
- *r.ringIndex = 1
- r.ring[0] = UsedElement{
- DescriptorIndex: 0x0123,
- Length: 0x4567,
- }
- r.ring[1] = UsedElement{
- DescriptorIndex: 0x89ab,
- Length: 0xcdef,
- }
- assert.Equal(t, []byte{
- 0xff, 0x01,
- 0x01, 0x00,
- 0x23, 0x01, 0x00, 0x00,
- 0x67, 0x45, 0x00, 0x00,
- 0xab, 0x89, 0x00, 0x00,
- 0xef, 0xcd, 0x00, 0x00,
- 0x00, 0x00,
- }, memory)
- }
- //func TestUsedRing_Take(t *testing.T) {
- // const queueSize = 8
- //
- // tests := []struct {
- // name string
- // ring []UsedElement
- // ringIndex uint16
- // lastIndex uint16
- // expected []UsedElement
- // }{
- // {
- // name: "nothing new",
- // ring: []UsedElement{
- // {DescriptorIndex: 1},
- // {DescriptorIndex: 2},
- // {DescriptorIndex: 3},
- // {DescriptorIndex: 4},
- // {},
- // {},
- // {},
- // {},
- // },
- // ringIndex: 4,
- // lastIndex: 4,
- // expected: nil,
- // },
- // {
- // name: "no overflow",
- // ring: []UsedElement{
- // {DescriptorIndex: 1},
- // {DescriptorIndex: 2},
- // {DescriptorIndex: 3},
- // {DescriptorIndex: 4},
- // {},
- // {},
- // {},
- // {},
- // },
- // ringIndex: 4,
- // lastIndex: 1,
- // expected: []UsedElement{
- // {DescriptorIndex: 2},
- // {DescriptorIndex: 3},
- // {DescriptorIndex: 4},
- // },
- // },
- // {
- // name: "ring overflow",
- // ring: []UsedElement{
- // {DescriptorIndex: 9},
- // {DescriptorIndex: 10},
- // {DescriptorIndex: 3},
- // {DescriptorIndex: 4},
- // {DescriptorIndex: 5},
- // {DescriptorIndex: 6},
- // {DescriptorIndex: 7},
- // {DescriptorIndex: 8},
- // },
- // ringIndex: 10,
- // lastIndex: 7,
- // expected: []UsedElement{
- // {DescriptorIndex: 8},
- // {DescriptorIndex: 9},
- // {DescriptorIndex: 10},
- // },
- // },
- // {
- // name: "index overflow",
- // ring: []UsedElement{
- // {DescriptorIndex: 9},
- // {DescriptorIndex: 10},
- // {DescriptorIndex: 3},
- // {DescriptorIndex: 4},
- // {DescriptorIndex: 5},
- // {DescriptorIndex: 6},
- // {DescriptorIndex: 7},
- // {DescriptorIndex: 8},
- // },
- // ringIndex: 2,
- // lastIndex: 65535,
- // expected: []UsedElement{
- // {DescriptorIndex: 8},
- // {DescriptorIndex: 9},
- // {DescriptorIndex: 10},
- // },
- // },
- // }
- // for _, tt := range tests {
- // t.Run(tt.name, func(t *testing.T) {
- // memory := make([]byte, usedRingSize(queueSize))
- // r := newUsedRing(queueSize, memory)
- //
- // copy(r.ring, tt.ring)
- // *r.ringIndex = tt.ringIndex
- // r.lastIndex = tt.lastIndex
- //
- // assert.Equal(t, tt.expected, r.take())
- // })
- // }
- //}
|