blob: c4524f4d7cdba20af860754fcb93bba48defd4fb [file] [log] [blame]
package mergedtiles
import (
"encoding/gob"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
"time"
"skia.googlesource.com/buildbot.git/perf/go/filetilestore"
"skia.googlesource.com/buildbot.git/perf/go/types"
)
func makeFakeTile(filename string, t *types.Tile) error {
f, err := os.Create(filename)
if err != nil {
return fmt.Errorf("File creation failed before test start: %s", err)
}
defer f.Close()
enc := gob.NewEncoder(f)
err = enc.Encode(t)
if err != nil {
return fmt.Errorf("Tile globbed failed before test start: %s", err)
}
f.Sync()
return nil
}
func TestMerging(t *testing.T) {
randomPath, err := ioutil.TempDir("", "mergedtiles_test")
if err != nil {
t.Fatalf("Failing to create temporary directory: %s", err)
return
}
defer os.RemoveAll(randomPath)
// The test file needs to be created in the 0/ subdirectory of the path.
randomFullPath := filepath.Join(randomPath, "test", "0")
if err := os.MkdirAll(randomFullPath, 0775); err != nil {
t.Fatalf("Failing to create temporary subdirectory: %s", err)
return
}
fileName := filepath.Join(randomFullPath, "0000.gob")
err = makeFakeTile(fileName, &types.Tile{
Traces: map[string]types.Trace{
"test": &types.PerfTrace{
Values: []float64{0.0, 1.4, -2},
Params_: map[string]string{"test": "parameter"},
},
},
ParamSet: map[string][]string{
"test": []string{"parameter"},
},
Commits: []*types.Commit{
&types.Commit{
CommitTime: 42,
Hash: "ffffffffffffffffffffffffffffffffffffffff",
Author: "test@test.cz",
},
&types.Commit{
CommitTime: 43,
Hash: "eeeeeeeeeee",
Author: "test@test.cz",
},
&types.Commit{
CommitTime: 44,
Hash: "aaaaaaaaaaa",
Author: "test@test.cz",
},
},
Scale: 0,
TileIndex: 0,
})
if err != nil {
t.Fatalf("Failed to create fake tile: %s\n", err)
return
}
ts := filetilestore.NewFileTileStore(randomPath, "test", 10*time.Millisecond)
m := NewMergedTiles(ts, 2)
_, err = m.Get(0, 0, 1)
if err == nil {
t.Fatalf("Failed to error when requesting a merged tile that doesn't exist: %s", err)
}
fileName = filepath.Join(randomFullPath, "0001.gob")
err = makeFakeTile(fileName, &types.Tile{
Traces: map[string]types.Trace{},
ParamSet: map[string][]string{
"test": []string{"parameter"},
},
Commits: []*types.Commit{
&types.Commit{
CommitTime: 45,
Hash: "0000000000000000000000000000000000000000",
Author: "test@test.cz",
},
},
Scale: 0,
TileIndex: 0,
})
_, err = m.Get(0, 0, 1)
if err != nil {
t.Fatalf("Failed to error when requesting a merged tile that doesn't exist: %s", err)
}
}