本文整理汇总了Golang中go/skia/org/infra/go/util.NewTempRepo函数的典型用法代码示例。如果您正苦于以下问题:Golang NewTempRepo函数的具体用法?Golang NewTempRepo怎么用?Golang NewTempRepo使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewTempRepo函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: testUnfinishedBuild
// testUnfinishedBuild verifies that we can write a build which is not yet
// finished, load the build back from the database, and update it when it
// finishes.
func testUnfinishedBuild(t *testing.T) {
d := clearDB(t)
defer d.Close(t)
// Load the test repo.
tr := util.NewTempRepo()
defer tr.Cleanup()
repos := gitinfo.NewRepoMap(tr.Dir)
// Obtain and insert an unfinished build.
httpClient = testHttpClient
b, err := getBuildFromMaster("client.skia", "Test-Ubuntu12-ShuttleA-GTX550Ti-x86_64-Release-Valgrind", 152, repos)
assert.Nil(t, err)
assert.False(t, b.IsFinished(), fmt.Errorf("Unfinished build thinks it's finished!"))
dbSerializeAndCompare(t, b, true)
// Ensure that the build is found by getUnfinishedBuilds.
unfinished, err := getUnfinishedBuilds()
assert.Nil(t, err)
found := false
for _, u := range unfinished {
if u.Master == b.Master && u.Builder == b.Builder && u.Number == b.Number {
found = true
break
}
}
assert.True(t, found, "Unfinished build was not found by getUnfinishedBuilds!")
// Add another step to the build to "finish" it, ensure that we can
// retrieve it as expected.
b.Finished = b.Started + 1000
b.Times[1] = b.Finished
stepStarted := b.Started + 500
s := &BuildStep{
BuildID: b.Id,
Name: "LastStep",
Times: []float64{stepStarted, b.Finished},
Number: len(b.Steps),
Results: 0,
ResultsRaw: []interface{}{0.0, []interface{}{}},
Started: b.Started + 500.0,
Finished: b.Finished,
}
b.Steps = append(b.Steps, s)
assert.True(t, b.IsFinished(), "Finished build thinks it's unfinished!")
dbSerializeAndCompare(t, b, true)
// Ensure that the finished build is NOT found by getUnfinishedBuilds.
unfinished, err = getUnfinishedBuilds()
assert.Nil(t, err)
found = false
for _, u := range unfinished {
if u.Master == b.Master && u.Builder == b.Builder && u.Number == b.Number {
found = true
break
}
}
assert.False(t, found, "Finished build was found by getUnfinishedBuilds!")
}
示例2: testBuildDbSerialization
// testBuildDbSerialization verifies that we can write a build to the DB and
// pull it back out without losing or corrupting the data.
func testBuildDbSerialization(t *testing.T) {
d := clearDB(t)
defer d.Close(t)
// Load the test repo.
tr := util.NewTempRepo()
defer tr.Cleanup()
repos := gitinfo.NewRepoMap(tr.Dir)
// Test case: an empty build. Tests null and empty values.
emptyTime := 0.0
emptyBuild := &Build{
Steps: []*BuildStep{},
Times: []float64{emptyTime, emptyTime},
Commits: []string{},
}
// Test case: a completely filled-out build.
buildFromFullJson, err := testGetBuildFromMaster(repos)
assert.Nil(t, err)
testCases := []*Build{emptyBuild, buildFromFullJson}
for _, b := range testCases {
dbSerializeAndCompare(t, b, true)
}
}
示例3: testBuildQueue
func testBuildQueue(t *testing.T, timeDecay24Hr float64, expectations []*buildQueueExpect, testInsert bool) {
testutils.SkipIfShort(t)
// Initialize the buildbot database.
d := clearDB(t)
defer d.Close(t)
// Load the test repo.
tr := util.NewTempRepo()
defer tr.Cleanup()
repos := gitinfo.NewRepoMap(tr.Dir)
repo, err := repos.Repo(TEST_REPO)
assert.Nil(t, err)
assert.Nil(t, repos.Update())
// Create the BuildQueue.
q, err := NewBuildQueue(PERIOD_FOREVER, repos, DEFAULT_SCORE_THRESHOLD, timeDecay24Hr, []*regexp.Regexp{}, d.db)
assert.Nil(t, err)
// Fake time.Now()
details, err := repo.Details(hashes['I'], false)
assert.Nil(t, err)
now := details.Timestamp.Add(1 * time.Hour)
// Update the queue.
assert.Nil(t, q.update(now))
// Ensure that we get the expected BuildCandidate at each step. Insert
// each BuildCandidate into the buildbot database to simulate actually
// running builds.
buildNum := 0
for _, expected := range expectations {
bc, err := q.Pop([]string{TEST_BUILDER})
assert.Equal(t, expected.err, err)
if err != nil {
break
}
glog.Infof("\n%v\n%v", expected.bc, bc)
assert.True(t, reflect.DeepEqual(expected.bc, bc))
if testInsert || buildNum == 0 {
// Actually insert a build, as if we're really using the scheduler.
// Do this even if we're not testing insertion, because if we don't,
// the queue won't know about this builder.
b := &buildbot.Build{
Builder: bc.Builder,
Master: "fake",
Number: buildNum,
BuildSlave: "fake",
Branch: "master",
GotRevision: bc.Commit,
Repository: TEST_REPO,
}
assert.Nil(t, buildbot.IngestBuild(d.db, b, repos))
buildNum++
assert.Nil(t, q.update(now))
}
}
}
示例4: testUnfinishedBuild
// testUnfinishedBuild verifies that we can write a build which is not yet
// finished, load the build back from the database, and update it when it
// finishes.
func testUnfinishedBuild(t *testing.T, local bool) {
testutils.SkipIfShort(t)
d := clearDB(t, local)
defer d.Close(t)
// Load the test repo.
tr := util.NewTempRepo()
defer tr.Cleanup()
repos := gitinfo.NewRepoMap(tr.Dir)
// Obtain and insert an unfinished build.
httpClient = testHttpClient
b, err := getBuildFromMaster("client.skia", "Test-Ubuntu12-ShuttleA-GTX550Ti-x86_64-Release-Valgrind", 152, repos)
assert.Nil(t, err)
assert.False(t, b.IsFinished(), "Unfinished build thinks it's finished!")
dbSerializeAndCompare(t, d, b, true)
// Ensure that the build is found by GetUnfinishedBuilds.
unfinished, err := d.DB().GetUnfinishedBuilds(b.Master)
assert.Nil(t, err)
found := false
for _, u := range unfinished {
if u.Master == b.Master && u.Builder == b.Builder && u.Number == b.Number {
found = true
break
}
}
assert.True(t, found, "Unfinished build was not found by getUnfinishedBuilds!")
// Add another step to the build to "finish" it, ensure that we can
// retrieve it as expected.
b.Finished = b.Started.Add(30 * time.Second)
stepStarted := b.Started.Add(500 * time.Millisecond)
s := &BuildStep{
Name: "LastStep",
Number: len(b.Steps),
Results: 0,
Started: stepStarted,
Finished: b.Finished,
}
b.Steps = append(b.Steps, s)
assert.True(t, b.IsFinished(), "Finished build thinks it's unfinished!")
dbSerializeAndCompare(t, d, b, true)
// Ensure that the finished build is NOT found by getUnfinishedBuilds.
unfinished, err = d.DB().GetUnfinishedBuilds(b.Master)
assert.Nil(t, err)
found = false
for _, u := range unfinished {
if u.Master == b.Master && u.Builder == b.Builder && u.Number == b.Number {
found = true
break
}
}
assert.False(t, found, "Finished build was found by getUnfinishedBuilds!")
}
示例5: TestBranchInfo
func TestBranchInfo(t *testing.T) {
tr := util.NewTempRepo()
defer tr.Cleanup()
r, err := NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false, true)
if err != nil {
t.Fatal(err)
}
branches, err := r.GetBranches()
assert.Nil(t, err)
assert.Equal(t, 2, len(branches))
// Make sure commits across all branches show up.
commits := []string{
"7a669cfa3f4cd3482a4fd03989f75efcc7595f7f",
"8652a6df7dc8a7e6addee49f6ed3c2308e36bd18",
"3f5a807d432ac232a952bbf223bc6952e4b49b2c",
}
found := r.From(time.Unix(1406721641, 0))
assert.Equal(t, commits, found)
// The timestamps of the three commits commits in the entire repository start
// at timestamp 1406721642.
testCases := []struct {
commitHash string
branchName string
nBranches int
}{
{
commitHash: "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18",
branchName: "master",
nBranches: 2,
},
{
commitHash: "7a669cfa3f4cd3482a4fd03989f75efcc7595f7f",
branchName: "master",
nBranches: 2,
},
{
commitHash: "3f5a807d432ac232a952bbf223bc6952e4b49b2c",
branchName: "test-branch-1",
nBranches: 1,
},
}
for _, tc := range testCases {
details, err := r.Details(tc.commitHash, true)
assert.Nil(t, err)
assert.True(t, details.Branches[tc.branchName])
assert.Equal(t, tc.nBranches, len(details.Branches))
}
}
示例6: testBuildQueue
func testBuildQueue(t *testing.T, timeDecay24Hr float64, expectations []*buildQueueExpect) {
testutils.SkipIfShort(t)
// Initialize the buildbot database.
d := clearDB(t)
defer d.Close(t)
// Load the test repo.
tr := util.NewTempRepo()
defer tr.Cleanup()
repos := gitinfo.NewRepoMap(tr.Dir)
repo, err := repos.Repo("/skia.git")
assert.Nil(t, err)
assert.Nil(t, repos.Update())
// Create the BuildQueue.
q, err := NewBuildQueue(PERIOD_FOREVER, tr.Dir, DEFAULT_SCORE_THRESHOLD, timeDecay24Hr, []string{TEST_BUILDER})
assert.Nil(t, err)
// Fake time.Now()
details, err := repo.Details(hashes['I'])
assert.Nil(t, err)
now := details.Timestamp.Add(1 * time.Hour)
// Ensure that we get the expected BuildCandidate at each step. Insert
// each BuildCandidate into the buildbot database to simulate actually
// running builds.
buildNum := 0
for _, expected := range expectations {
assert.Nil(t, q.update(now))
bc, err := q.Pop(TEST_BUILDER)
assert.Equal(t, expected.err, err)
if err != nil {
break
}
hash, err := repo.FullHash(bc.Commit)
assert.Nil(t, err)
bc.Commit = hash
assert.True(t, reflect.DeepEqual(expected.bc, bc))
b := &buildbot.Build{
Builder: bc.Builder,
Master: "fake",
Number: buildNum,
BuildSlave: "fake",
Branch: "master",
GotRevision: bc.Commit,
Repository: TEST_REPO,
}
assert.Nil(t, buildbot.IngestBuild(b, repos))
buildNum++
}
}
示例7: TestNumCommits
func TestNumCommits(t *testing.T) {
tr := util.NewTempRepo()
defer tr.Cleanup()
r, err := NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false, false)
if err != nil {
t.Fatal(err)
}
if got, want := r.NumCommits(), 2; got != want {
t.Errorf("NumCommit wrong number: Got %v Want %v", got, want)
}
}
示例8: TestIngestCommits
func TestIngestCommits(t *testing.T) {
// Get a known Git repo with 34 commits in it setup.
tr := util.NewTempRepo()
defer tr.Cleanup()
// Create a temporary place for a filetilestore.
tileDir, err := ioutil.TempDir("", "skiaperf")
if err != nil {
t.Fatal("Failed to create testing Tile dir: ", err)
}
defer testutils.RemoveAll(t, tileDir)
git, err := gitinfo.NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false, false)
if err != nil {
glog.Fatalf("Failed loading Git info: %s\n", err)
}
// Construct an Ingestor and have it UpdateCommitInfo.
i, err := ingester.NewIngester(git, tileDir, config.DATASET_NANO, NewNanoBenchIngester(), 1, time.Second, map[string]string{}, "", "")
if err != nil {
t.Fatal("Failed to create ingester:", err)
}
if err := i.UpdateCommitInfo(false); err != nil {
t.Fatal("Failed to ingest commits:", err)
}
// Validate the generated Tiles.
store := filetilestore.NewFileTileStore(tileDir, config.DATASET_NANO, 0)
if !validator.ValidateDataset(store, false, false) {
t.Error("Failed to validate the created Tiles:", err)
}
// Test TileTracker while were here.
tt := ingester.NewTileTracker(store, i.HashToNumber())
err = tt.Move("7a6fe813047d1a84107ef239e81f310f27861473")
if err != nil {
t.Fatal(err)
}
if got, want := tt.LastTileNum(), 2; got != want {
t.Errorf("Move failed, wrong tile: Got %d Want %d", got, want)
}
err = tt.Move("87709bc360f35de52c2f2bc2fc70962fb234db2d")
if err != nil {
t.Fatal(err)
}
if got, want := tt.LastTileNum(), 2; got != want {
t.Errorf("Move failed, wrong tile: Got %d Want %d", got, want)
}
}
示例9: TestShortList
func TestShortList(t *testing.T) {
tr := util.NewTempRepo()
defer tr.Cleanup()
r, err := NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false, false)
if err != nil {
t.Fatal(err)
}
l, err := r.ShortList("8652a6df7dc8a7e6addee49f6ed3c2308e36bd18", "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18")
if err != nil {
t.Fatal(err)
}
if got, want := len(l.Commits), 0; got != want {
t.Fatalf("Wrong number of zero results: Got %v Want %v", got, want)
}
c, err := r.ShortList("7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18")
if err != nil {
t.Fatal(err)
}
expected := []struct {
Hash string
Author string
Subject string
}{
{
Hash: "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18",
Author: "Joe Gregorio",
Subject: "Added code. No body.",
},
}
if got, want := len(c.Commits), len(expected); got != want {
t.Fatalf("Wrong number of results: Got %v Want %v", got, want)
}
for i, o := range c.Commits {
if got, want := o.Hash, expected[i].Hash; got != want {
t.Errorf("Wrong hash: Got %v Want %v", got, want)
}
if got, want := o.Author, expected[i].Author; got != want {
t.Errorf("Wrong author: Got %v Want %v", got, want)
}
if got, want := o.Subject, expected[i].Subject; got != want {
t.Errorf("Wrong subject: Got %v Want %v", got, want)
}
}
}
示例10: TestRevList
func TestRevList(t *testing.T) {
tr := util.NewTempRepo()
defer tr.Cleanup()
r, err := NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false, true)
if err != nil {
t.Fatal(err)
}
revs := []string{
"8652a6df7dc8a7e6addee49f6ed3c2308e36bd18",
"7a669cfa3f4cd3482a4fd03989f75efcc7595f7f",
}
testCases := []struct {
Input []string
Expected []string
}{
{
Input: []string{"master"},
Expected: revs,
},
{
Input: []string{"HEAD"},
Expected: revs,
},
{
Input: []string{"7a669cf..8652a6d"},
Expected: revs[1:],
},
{
Input: []string{"8652a6d", "^7a669cf"},
Expected: revs[1:],
},
{
Input: []string{"8652a6d..7a669cf"},
Expected: []string{},
},
}
for _, tc := range testCases {
actual, err := r.RevList(tc.Input...)
if err != nil {
t.Fatal(err)
}
if !util.SSliceEqual(actual, tc.Expected) {
t.Fatalf("Failed test for: git rev-list %s\nGot: %v\nWant: %v", strings.Join(tc.Input, " "), actual, tc.Expected)
}
}
}
示例11: TestGetBuildFromMaster
// TestGetBuildFromMaster verifies that we can load JSON data from the build master and
// decode it into a Build object.
func TestGetBuildFromMaster(t *testing.T) {
testutils.SkipIfShort(t)
// Load the test repo.
tr := util.NewTempRepo()
defer tr.Cleanup()
repos := gitinfo.NewRepoMap(tr.Dir)
// Default, complete build.
_, err := testGetBuildFromMaster(repos)
assert.Nil(t, err)
// Incomplete build.
_, err = getBuildFromMaster("client.skia", "Test-Ubuntu12-ShuttleA-GTX550Ti-x86_64-Release-Valgrind", 152, repos)
assert.Nil(t, err)
}
示例12: TestLog
func TestLog(t *testing.T) {
tr := util.NewTempRepo()
defer tr.Cleanup()
r, err := NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false, false)
if err != nil {
t.Fatal(err)
}
got, err := r.Log("7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "")
if err != nil {
t.Fatal(err)
}
want := `commit 7a669cfa3f4cd3482a4fd03989f75efcc7595f7f
Author: Joe Gregorio <[email protected]>
Date: Wed Jul 30 08:00:42 2014 -0400
First "checkin"
With quotes.
README.txt
`
if got != want {
t.Errorf("Log failed: \nGot %q \nWant %q", got, want)
}
got, err = r.Log("7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18")
if err != nil {
t.Fatal(err)
}
want = `commit 8652a6df7dc8a7e6addee49f6ed3c2308e36bd18
Author: Joe Gregorio <[email protected]>
Date: Wed Jul 30 08:01:55 2014 -0400
Added code. No body.
README.txt
hello.go
`
if got != want {
t.Errorf("Log failed: \nGot %q \nWant %q", got, want)
}
}
示例13: TestBuildJsonSerialization
// TestBuildJsonSerialization verifies that we can serialize a build to JSON
// and back without losing or corrupting the data.
func TestBuildJsonSerialization(t *testing.T) {
testutils.SkipIfShort(t)
// Load the test repo.
tr := util.NewTempRepo()
defer tr.Cleanup()
repos := gitinfo.NewRepoMap(tr.Dir)
b1, err := testGetBuildFromMaster(repos)
assert.Nil(t, err)
bytes, err := json.Marshal(b1)
assert.Nil(t, err)
b2 := &Build{}
assert.Nil(t, json.Unmarshal(bytes, b2))
testutils.AssertDeepEqual(t, b1, b2)
}
示例14: TestTileAddressFromHash
func TestTileAddressFromHash(t *testing.T) {
tr := util.NewTempRepo()
defer tr.Cleanup()
r, err := NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false, false)
if err != nil {
t.Fatal(err)
}
// The two commits in the repo have timestamps of:
// 1406721715 and 1406721642.
testCases := []struct {
hash string
start time.Time
num int
offset int
}{
{
hash: "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18",
start: time.Unix(1406721642, 0),
num: 0,
offset: 1,
},
{
hash: "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18",
start: time.Unix(1406721643, 0),
num: 0,
offset: 0,
},
}
for _, tc := range testCases {
n, o, err := r.TileAddressFromHash(tc.hash, tc.start)
if err != nil {
t.Fatal(err)
}
if n != tc.num || o != tc.offset {
t.Errorf("Address unexpected: got (%d, %d), want (%d, %d).", tc.num, tc.offset, n, o)
}
}
}
示例15: TestFrom
func TestFrom(t *testing.T) {
tr := util.NewTempRepo()
defer tr.Cleanup()
r, err := NewGitInfo(filepath.Join(tr.Dir, "testrepo"), false, false)
if err != nil {
t.Fatal(err)
}
// The two commits in the repo have timestamps of:
// 1406721715 and 1406721642.
testCases := []struct {
ts int64
length int
}{
{
ts: 1406721715,
length: 0,
},
{
ts: 1406721714,
length: 1,
},
{
ts: 1406721642,
length: 1,
},
{
ts: 1406721641,
length: 2,
},
}
for _, tc := range testCases {
hashes := r.From(time.Unix(tc.ts, 0))
if got, want := len(hashes), tc.length; got != want {
t.Errorf("For ts: %d Length returned is wrong: Got %d Want %d", tc.ts, got, want)
}
}
}