mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-06 18:10:26 +08:00
69 lines
1.3 KiB
Go
69 lines
1.3 KiB
Go
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
|
|
|
package compressions
|
|
|
|
import (
|
|
"bytes"
|
|
"errors"
|
|
"github.com/TeaOSLab/EdgeNode/internal/caches"
|
|
"io"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestGzipReader(t *testing.T) {
|
|
fp, err := os.Open("/Users/WorkSpace/EdgeProject/EdgeCache/p43/36/7e/367e02720713fe05b66573a1d69b4f0a.cache")
|
|
if err != nil {
|
|
// not fatal
|
|
t.Log(err)
|
|
return
|
|
}
|
|
defer func() {
|
|
_ = fp.Close()
|
|
}()
|
|
|
|
var buf = make([]byte, 32*1024)
|
|
cacheReader := caches.NewFileReader(fp)
|
|
err = cacheReader.Init()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var headerBuf = []byte{}
|
|
err = cacheReader.ReadHeader(buf, func(n int) (goNext bool, err error) {
|
|
headerBuf = append(headerBuf, buf[:n]...)
|
|
for {
|
|
nIndex := bytes.Index(headerBuf, []byte{'\n'})
|
|
if nIndex >= 0 {
|
|
row := headerBuf[:nIndex]
|
|
spaceIndex := bytes.Index(row, []byte{':'})
|
|
if spaceIndex <= 0 {
|
|
return false, errors.New("invalid header '" + string(row) + "'")
|
|
}
|
|
|
|
headerBuf = headerBuf[nIndex+1:]
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
return true, nil
|
|
})
|
|
|
|
reader, err := NewGzipReader(cacheReader)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for {
|
|
n, err := reader.Read(buf)
|
|
if err != nil {
|
|
if err != io.EOF {
|
|
t.Fatal(err)
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
t.Log(string(buf[:n]))
|
|
_ = n
|
|
}
|
|
}
|