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  }