// Needles get needles from sync.Pool. func (s *Store) Needles(i int) *needle.Needles { var n interface{} if n = s.nsp[i].Get(); n != nil { return n.(*needle.Needles) } return needle.NewBufferNeedles(i, s.conf.NeedleMaxSize) }
func TestVolume(t *testing.T) { var ( v *Volume err error data = []byte("test") bfile = "../test/test1" ifile = "../test/test1.idx" n = needle.NewBufferNeedle(_c.NeedleMaxSize) ns = needle.NewBufferNeedles(3, _c.NeedleMaxSize) buf = &bytes.Buffer{} ) os.Remove(bfile) os.Remove(ifile) defer os.Remove(bfile) defer os.Remove(ifile) if v, err = NewVolume(1, bfile, ifile, _c); err != nil { t.Errorf("NewVolume() error(%v)", err) t.FailNow() } v.Close() // test open if err = v.Open(); err != nil { t.Errorf("Open() error(%v)", err) t.FailNow() } defer v.Close() // test write if _, err = buf.Write(data); err != nil { t.Errorf("buf.Write() error(%v)", err) t.FailNow() } if err = n.WriteFrom(1, 1, 4, buf); err != nil { t.Errorf("n.Write() error(%v)", err) t.FailNow() } if err = v.Write(n); err != nil { t.Errorf("Add() error(%v)", err) t.FailNow() } if _, err = buf.Write(data); err != nil { t.Errorf("buf.Write() error(%v)", err) t.FailNow() } if err = n.WriteFrom(2, 2, 4, buf); err != nil { t.Errorf("n.Write() error(%v)", err) t.FailNow() } if err = v.Write(n); err != nil { t.Errorf("Add() error(%v)", err) t.FailNow() } if _, err = buf.Write(data); err != nil { t.Errorf("buf.Write() error(%v)", err) t.FailNow() } if err = n.WriteFrom(3, 3, 4, buf); err != nil { t.Errorf("n.Write() error(%v)", err) t.FailNow() } if err = v.Write(n); err != nil { t.Errorf("Add() error(%v)", err) t.FailNow() } if _, err = buf.Write(data); err != nil { t.Errorf("buf.Write() error(%v)", err) t.FailNow() } if err = ns.WriteFrom(4, 4, 4, buf); err != nil { t.Errorf("ns.Write() error(%v)", err) t.FailNow() } if _, err = buf.Write(data); err != nil { t.Errorf("buf.Write() error(%v)", err) t.FailNow() } if err = ns.WriteFrom(5, 5, 4, buf); err != nil { t.Errorf("ns.Write() error(%v)", err) t.FailNow() } if _, err = buf.Write(data); err != nil { t.Errorf("buf.Write() error(%v)", err) t.FailNow() } if err = ns.WriteFrom(6, 6, 4, buf); err != nil { t.Errorf("ns.Write() error(%v)", err) t.FailNow() } if err = v.Writes(ns); err != nil { t.Errorf("Write() error(%v)", err) t.FailNow() } if err = v.Delete(3); err != nil { t.Errorf("Del error(%v)", err) t.FailNow() } n.Key = 3 n.Cookie = 3 if err = v.Get(n); err != errors.ErrNeedleDeleted { t.Error("err must be ErrNeedleDeleted") t.FailNow() } else { err = nil } }