pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/directio/directio_test.go (about) 1 package directio 2 3 // ////////////////////////////////////////////////////////////////////////////////// // 4 // // 5 // Copyright (c) 2022 ESSENTIAL KAOS // 6 // Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0> // 7 // // 8 // ////////////////////////////////////////////////////////////////////////////////// // 9 10 import ( 11 "io/ioutil" 12 "strings" 13 "testing" 14 15 . "pkg.re/essentialkaos/check.v1" 16 ) 17 18 // ////////////////////////////////////////////////////////////////////////////////// // 19 20 func Test(t *testing.T) { TestingT(t) } 21 22 type DirectIOSuite struct{} 23 24 // ////////////////////////////////////////////////////////////////////////////////// // 25 26 var _ = Suite(&DirectIOSuite{}) 27 28 // ////////////////////////////////////////////////////////////////////////////////// // 29 30 func (s *DirectIOSuite) TestReading(c *C) { 31 tmpDir := c.MkDir() 32 tmpFile := tmpDir + "/tmp_data" 33 payload := []byte(strings.Repeat("DATA1", 6543)) 34 35 err := ioutil.WriteFile(tmpFile, payload, 0644) 36 37 if err != nil { 38 c.Fatal(err.Error()) 39 } 40 41 data, err := ReadFile(tmpFile) 42 43 c.Assert(err, IsNil) 44 c.Assert(data, NotNil) 45 46 c.Assert(string(data), Equals, strings.Repeat("DATA1", 6543)) 47 48 data, err = ReadFile(tmpDir + "/not_exist") 49 50 c.Assert(err, NotNil) 51 c.Assert(data, IsNil) 52 } 53 54 func (s *DirectIOSuite) TestWriting(c *C) { 55 tmpDir := c.MkDir() 56 tmpFile := tmpDir + "/tmp_data" 57 payload := []byte(strings.Repeat("DATA", 6543)) 58 59 err := WriteFile(tmpFile, payload, 0644) 60 61 c.Assert(err, IsNil) 62 63 data, err := ioutil.ReadFile(tmpFile) 64 65 c.Assert(err, IsNil) 66 c.Assert(len(data), Equals, len(payload)) 67 68 err = WriteFile("/not_exist", payload, 0644) 69 70 c.Assert(err, NotNil) 71 } 72 73 func (s *DirectIOSuite) BenchmarkAllocation(c *C) { 74 for i := 0; i < c.N; i++ { 75 block := allocateBlock() 76 freeBlock(block) 77 } 78 }