This repository has been archived by the owner on Mar 23, 2021. It is now read-only.
/
getdupe.cs
86 lines (78 loc) · 1.77 KB
/
getdupe.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using Gtk;
using Pyro;
using System.IO;
using System;
using System.Collections.Generic;
public class GetDupe
{
public static void Main(string[] args)
{
Application.Init();
new GetDupe(int.Parse(args[0]));
Application.Run();
}
Bug bug;
Queue<Bug> bugs;
Stacktrace st;
GetDupe(int id)
{
Bugzilla bugz = new Bugzilla("http://bugzilla.gnome.org/");
BugDB.bugz = bugz;
bug = new Bug(id,bugz);
bug.getStacktrace(new Response(grabStacktrace,null,bug));
}
private void grabStacktrace(object res, object data, Response r)
{
st = (Stacktrace)res;
st.print();
if (st.usable())
{
BugDB.DB.similar(bug.id,new Response(moreStacktraces,r, data));
}
else
Console.WriteLine("stacktrace isn't usable");
}
private void moreStacktraces(object res, object data, Response r)
{
Console.WriteLine("moreStackTraces: {0}",res);
if (res!=null)
{
Bug b2 = (Bug)res;
Console.WriteLine("moreStackTraces: res not null!",res);
Console.WriteLine("other bug is {0}, hash is {1}",b2.id,b2.stackhash);
}
else
bug.similar(new Response(grabSimilar,r,data));
}
private void grabSimilar(object res, object data, Response r)
{
bugs = new Queue<Bug>((Bug[])res);
nextSimilar();
}
private void nextSimilar()
{
if (bugs.Count == 0)
{
Console.WriteLine("Ran out of bugs!");
return;
}
Bug b = bugs.Dequeue();
if (b.id == bug.id)
{
nextSimilar();
return;
}
b.buildStacktrace(new Response(checkStacktraces,null,b));
}
private void checkStacktraces(object res, object data, Response r)
{
Bug b = (Bug)data;
Stacktrace st2 = (Stacktrace)res;
Console.WriteLine("compare {0} {1}",bug.id,bug.stackhash);
Console.WriteLine("shown {0} {1}",b.id,b.stackhash);
if (st2 == st)
Console.WriteLine("dupe!");
/*else
nextSimilar();*/
}
}