Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
baas-ide
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guxukai
baas-ide
Commits
0c85b370
Commit
0c85b370
authored
Jul 04, 2016
by
yann300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add tests
parent
1bc99662
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
248 additions
and
136 deletions
+248
-136
BasicPanel.js
src/BasicPanel.js
+1
-1
Sticker.js
src/Sticker.js
+7
-7
VmDebugger.js
src/VmDebugger.js
+5
-6
index.js
test-browser/index.js
+1
-122
init.js
test-browser/init.js
+108
-0
vmdebugger.js
test-browser/vmdebugger.js
+126
-0
No files found.
src/BasicPanel.js
View file @
0c85b370
...
...
@@ -20,7 +20,7 @@ BasicPanel.prototype.render = function () {
${
this
.
name
}
</div>
<div style=
${
ui
.
formatCss
(
style
.
panel
.
tableContainer
)}
>
<pre style=
${
ui
.
formatCss
(
style
.
panel
.
table
,
style
.
font
)}
>
${
this
.
data
}
</pre>
<pre style=
${
ui
.
formatCss
(
style
.
panel
.
table
,
style
.
font
)}
id='basicpanel'
>
${
this
.
data
}
</pre>
</div>
</div>`
if
(
!
this
.
view
)
{
...
...
src/Sticker.js
View file @
0c85b370
...
...
@@ -25,7 +25,7 @@ Sticker.prototype.render = function () {
<td>
VMtracestep:
</td>
<td>
<td
id='vmtracestepinfo'
>
${
this
.
vmTraceStep
}
</td>
</tr>
...
...
@@ -33,7 +33,7 @@ Sticker.prototype.render = function () {
<td>
Step:
</td>
<td>
<td
id='stepinfo'
>
${
this
.
step
}
</td>
</tr>
...
...
@@ -41,7 +41,7 @@ Sticker.prototype.render = function () {
<td>
Add memory:
</td>
<td>
<td
id='addmemoryinfo'
>
${
this
.
addmemory
}
</td>
</tr>
...
...
@@ -49,7 +49,7 @@ Sticker.prototype.render = function () {
<td>
Gas:
</td>
<td>
<td
id='gasinfo'
>
${
this
.
gas
}
</td>
</tr>
...
...
@@ -57,15 +57,15 @@ Sticker.prototype.render = function () {
<td>
Remaining gas:
</td>
<td>
<td
id='remaininggasinfo'
>
${
this
.
remainingGas
}
</td>
</tr>
<tr key='
remainingga
s'>
<tr key='
loadedaddres
s'>
<td>
Loaded address:
</td>
<td>
<td
id='loadedaddressinfo'
>
${
this
.
loadedAddress
}
</td>
</tr>
...
...
src/VmDebugger.js
View file @
0c85b370
...
...
@@ -33,26 +33,25 @@ VmDebugger.prototype.render = function () {
<tbody>
<tr>
<td>
${
this
.
asmCode
.
render
()}
</td>
<td>
<td
id='stackpanel'
>
${
this
.
stackPanel
.
render
()}
</td>
</tr>
<tr>
<td>
<td
id='storagepanel'
>
${
this
.
storagePanel
.
render
()}
</td>
<td>
<td
id='memorypanel'
>
${
this
.
memoryPanel
.
render
()}
</td>
</tr>
<tr>
<td>
<td
id='calldatapanel'
>
${
this
.
calldataPanel
.
render
()}
</td>
<td>
<td
id='callstackpanel'
>
${
this
.
CallstackPanel
.
render
()}
</td>
</tr>
...
...
test-browser/index.js
View file @
0c85b370
/* global web3Override */
module
.
exports
=
{
beforeEach
:
function
(
browser
,
done
)
{
init
(
browser
,
done
)
},
'Load Trace - not found'
:
function
(
browser
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942zcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
assert
.
containsText
(
'#txhash'
,
'<not found>'
)
.
end
()
},
'Load Trace - found'
:
function
(
browser
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
waitForElementVisible
(
'#vmdebugger'
,
1000
)
.
assert
.
containsText
(
'#txhash'
,
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
assert
.
containsText
(
'#txfrom'
,
'0x00101c5bfa3fc8bad02c9f5fd65b069306251915'
)
.
assert
.
containsText
(
'#txto'
,
'0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5'
)
.
click
(
'#unload'
)
.
waitForElementNotVisible
(
'#vmdebugger'
,
1000
)
.
end
()
},
'Stepping'
:
function
(
browser
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
waitForElementVisible
(
'#vmdebugger'
,
1000
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
checkCurrentSelectedItem
(
'004 MSTORE'
)
.
click
(
'#intoforward'
)
.
click
(
'#intoback'
)
.
click
(
'#intoback'
)
.
checkCurrentSelectedItem
(
'002 PUSH 40'
)
.
click
(
'#nextcall'
)
.
checkCurrentSelectedItem
(
'181 CREATE'
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
click
(
'#overforward'
)
.
checkCurrentSelectedItem
(
'058 RETURN'
)
.
click
(
'#intoforward'
)
.
click
(
'#overback'
)
.
checkCurrentSelectedItem
(
'181 CREATE'
)
.
end
()
},
'Slider'
:
function
(
browser
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
waitForElementVisible
(
'#vmdebugger'
,
1000
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
LEFT_ARROW
)
.
checkCurrentSelectedItem
(
'041 PUSH 60fe47b1'
)
.
end
()
}
}
function
init
(
browser
,
callback
)
{
browser
.
checkCurrentSelectedItem
=
function
(
expected
)
{
browser
.
getValue
(
'#asmitems'
,
function
(
result
)
{
browser
.
assert
.
containsText
(
'#asmitems option[value="'
+
result
.
value
+
'"]'
,
expected
)
})
return
browser
}
browser
.
url
(
'http://127.0.0.1:8080'
)
injectScript
(
'./test/resources/testWeb3.js'
,
browser
,
function
()
{
callback
()
})
}
function
readFile
(
filename
,
callback
)
{
var
fs
=
require
(
'fs'
)
try
{
console
.
log
(
'reading '
+
filename
)
fs
.
readFile
(
filename
,
'utf8'
,
callback
)
}
catch
(
e
)
{
console
.
log
(
e
)
callback
(
e
)
}
}
function
injectScript
(
file
,
browser
,
callback
)
{
readFile
(
file
,
function
(
error
,
result
)
{
if
(
!
error
)
{
browser
.
execute
(
function
(
data
)
{
eval
.
call
(
null
,
data
)
// eslint-disable-line
var
vmdebugger
=
document
.
getElementById
(
'app'
).
vmdebugger
vmdebugger
.
web3
.
eth
.
getCode
=
web3Override
.
getCode
vmdebugger
.
web3
.
debug
.
traceTransaction
=
web3Override
.
traceTransaction
vmdebugger
.
web3
.
debug
.
storageAt
=
web3Override
.
storageAt
vmdebugger
.
web3
.
eth
.
getTransaction
=
web3Override
.
getTransaction
vmdebugger
.
web3
.
eth
.
getTransactionFromBlock
=
web3Override
.
getTransactionFromBlock
vmdebugger
.
web3
.
eth
.
getBlockNumber
=
web3Override
.
getBlockNumber
},
[
result
],
function
()
{
callback
()
})
}
})
}
require
(
'./vmdebugger'
)
test-browser/init.js
0 → 100644
View file @
0c85b370
/* global web3Override */
module
.
exports
=
function
(
browser
,
callback
)
{
extendBrowser
(
browser
)
browser
.
url
(
'http://127.0.0.1:8080'
)
injectScript
(
'./test/resources/testWeb3.js'
,
browser
,
function
()
{
callback
()
})
}
function
readFile
(
filename
,
callback
)
{
var
fs
=
require
(
'fs'
)
try
{
console
.
log
(
'reading '
+
filename
)
fs
.
readFile
(
filename
,
'utf8'
,
callback
)
}
catch
(
e
)
{
console
.
log
(
e
)
callback
(
e
)
}
}
function
injectScript
(
file
,
browser
,
callback
)
{
readFile
(
file
,
function
(
error
,
result
)
{
if
(
!
error
)
{
browser
.
execute
(
function
(
data
)
{
eval
.
call
(
null
,
data
)
// eslint-disable-line
var
vmdebugger
=
document
.
getElementById
(
'app'
).
vmdebugger
vmdebugger
.
web3
.
eth
.
getCode
=
web3Override
.
getCode
vmdebugger
.
web3
.
debug
.
traceTransaction
=
web3Override
.
traceTransaction
vmdebugger
.
web3
.
debug
.
storageAt
=
web3Override
.
storageAt
vmdebugger
.
web3
.
eth
.
getTransaction
=
web3Override
.
getTransaction
vmdebugger
.
web3
.
eth
.
getTransactionFromBlock
=
web3Override
.
getTransactionFromBlock
vmdebugger
.
web3
.
eth
.
getBlockNumber
=
web3Override
.
getBlockNumber
},
[
result
],
function
()
{
callback
()
})
}
})
}
function
extendBrowser
(
browser
)
{
browser
.
assertCurrentSelectedItem
=
function
(
expected
)
{
browser
.
getValue
(
'#asmitems'
,
function
(
result
)
{
browser
.
assert
.
containsText
(
'#asmitems option[value="'
+
result
.
value
+
'"]'
,
expected
)
})
return
browser
}
browser
.
assertSticker
=
function
(
vmtracestepinfo
,
stepinfo
,
addmemoryinfo
,
gasinfo
,
remaininggasinfo
,
loadedaddressinfo
)
{
browser
.
expect
.
element
(
'#vmtracestepinfo'
).
text
.
to
.
equal
(
vmtracestepinfo
)
browser
.
expect
.
element
(
'#stepinfo'
).
text
.
to
.
equal
(
stepinfo
)
browser
.
expect
.
element
(
'#addmemoryinfo'
).
text
.
to
.
equal
(
addmemoryinfo
)
browser
.
expect
.
element
(
'#gasinfo'
).
text
.
to
.
equal
(
gasinfo
)
browser
.
expect
.
element
(
'#remaininggasinfo'
).
text
.
to
.
equal
(
remaininggasinfo
)
browser
.
expect
.
element
(
'#loadedaddressinfo'
).
text
.
to
.
equal
(
loadedaddressinfo
)
return
browser
}
browser
.
assertStack
=
function
(
value
)
{
return
assertPanel
(
'#stackpanel'
,
browser
,
value
)
}
browser
.
assertStorageChanges
=
function
(
value
)
{
return
assertPanel
(
'#storagepanel'
,
browser
,
value
)
}
browser
.
assertMemory
=
function
(
value
)
{
return
assertPanel
(
'#memorypanel'
,
browser
,
value
)
}
browser
.
assertCallData
=
function
(
value
)
{
return
assertPanel
(
'#calldatapanel'
,
browser
,
value
)
}
browser
.
assertCallStack
=
function
(
value
)
{
return
assertPanel
(
'#callstackpanel'
,
browser
,
value
)
}
browser
.
assertStackValue
=
function
(
index
,
value
)
{
return
assertPanelValue
(
'#stackpanel'
,
browser
,
index
,
value
)
}
browser
.
assertStorageChangesValue
=
function
(
index
,
value
)
{
return
assertPanelValue
(
'#storagepanel'
,
browser
,
index
,
value
)
}
browser
.
assertMemoryValue
=
function
(
index
,
value
)
{
return
assertPanelValue
(
'#memorypanel'
,
browser
,
index
,
value
)
}
browser
.
assertCallStackValue
=
function
(
index
,
value
)
{
return
assertPanelValue
(
'#callstackpanel'
,
browser
,
index
,
value
)
}
}
function
assertPanel
(
id
,
browser
,
value
)
{
browser
.
expect
.
element
(
id
+
' #basicpanel'
).
text
.
to
.
equal
(
value
)
return
browser
}
function
assertPanelValue
(
id
,
browser
,
index
,
value
,
done
)
{
browser
.
getText
(
id
+
' #basicpanel'
,
function
(
result
)
{
var
values
=
result
.
value
.
split
(
'
\
n'
)
browser
.
assert
.
equal
(
values
[
index
],
value
)
})
return
browser
}
test-browser/vmdebugger.js
0 → 100644
View file @
0c85b370
'use strict'
var
init
=
require
(
'./init'
)
module
.
exports
=
{
beforeEach
:
function
(
browser
,
done
)
{
init
(
browser
,
done
)
},
'Load Trace - not found'
:
function
(
browser
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942zcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
assert
.
containsText
(
'#txhash'
,
'<not found>'
)
.
end
()
},
'Load Trace - found'
:
function
(
browser
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
waitForElementVisible
(
'#vmdebugger'
,
1000
)
.
expect
.
element
(
'#txhash'
).
text
.
to
.
equal
(
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
browser
.
expect
.
element
(
'#txfrom'
).
text
.
to
.
equal
(
'0x00101c5bfa3fc8bad02c9f5fd65b069306251915'
)
browser
.
expect
.
element
(
'#txto'
).
text
.
to
.
equal
(
'0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5'
)
browser
.
expect
.
element
(
'#txto'
).
text
.
to
.
equal
(
'0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5'
)
browser
.
click
(
'#unload'
)
.
waitForElementNotVisible
(
'#vmdebugger'
,
1000
)
.
end
()
},
'Stepping'
:
function
(
browser
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
waitForElementVisible
(
'#vmdebugger'
,
1000
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
assertCurrentSelectedItem
(
'004 MSTORE'
)
.
click
(
'#intoforward'
)
.
click
(
'#intoback'
)
.
click
(
'#intoback'
)
.
assertCurrentSelectedItem
(
'002 PUSH 40'
)
.
click
(
'#nextcall'
)
.
assertCurrentSelectedItem
(
'181 CREATE'
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
click
(
'#overforward'
)
.
assertCurrentSelectedItem
(
'058 RETURN'
)
.
click
(
'#intoforward'
)
.
click
(
'#overback'
)
.
assertCurrentSelectedItem
(
'181 CREATE'
)
.
end
()
},
'Slider'
:
function
(
browser
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
waitForElementVisible
(
'#vmdebugger'
,
1000
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
LEFT_ARROW
)
.
assertCurrentSelectedItem
(
'041 PUSH 60fe47b1'
)
.
end
()
},
'Sticker'
:
function
(
browser
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
waitForElementVisible
(
'#vmdebugger'
,
1000
)
.
click
(
'#intoforward'
)
.
click
(
'#intoforward'
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
sendKeys
(
'#slider'
,
browser
.
Keys
.
RIGHT_ARROW
)
.
assertSticker
(
'6'
,
'6'
,
''
,
'3'
,
'84476'
,
'0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5'
)
.
click
(
'#nextcall'
)
.
assertSticker
(
'63'
,
'63'
,
''
,
'32000'
,
'79283'
,
'0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5'
)
.
click
(
'#intoforward'
)
.
click
(
'#overforward'
)
.
assertSticker
(
'108'
,
'44'
,
''
,
'0'
,
'27145'
,
'(Contract Creation - Step 63)'
)
.
click
(
'#intoforward'
)
.
assertSticker
(
'109'
,
'64'
,
''
,
'3'
,
'25145'
,
'0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5'
)
.
end
()
},
'Panels'
:
function
(
browser
,
done
)
{
browser
.
clearValue
(
'#txinput'
)
.
setValue
(
'#txinput'
,
'0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51'
)
.
click
(
'#load'
)
.
waitForElementVisible
(
'#vmdebugger'
,
1000
)
.
click
(
'#nextcall'
)
.
assertStack
(
'0x
\
n0x60
\
n0x65
\
n0x38
\
n0x55
\
n0x60fe47b1'
)
.
assertStackValue
(
1
,
'0x60'
)
.
assertStorageChanges
(
'0x00 0x38'
)
.
assertMemoryValue
(
6
,
'0xc0 60 60 60 40 52 60 40 51 60 20 80 60 45 83 39 81 ????R??Q????E?9?'
)
.
assertMemoryValue
(
7
,
'0xe0 01 60 40 52 80 80 51 90 60 20 01 90 91 90 50 50 ???R??Q???????PP'
)
.
assertMemoryValue
(
8
,
'0x100 5b 80 60 01 01 60 00 60 00 50 81 90 55 50 5b 50 ?????????P??UP?P'
)
.
assertCallData
(
'0x60fe47b10000000000000000000000000000000000000000000000000000000000000038'
)
.
assertCallStack
(
'0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5'
)
.
click
(
'#intoforward'
)
// CREATE
.
assertStack
(
''
)
.
assertStorageChanges
(
''
)
.
assertMemory
(
''
)
.
assertCallData
(
'0x0000000000000000000000000000000000000000000000000000000000000000000000000000006060606040526040516020806045833981016040528080519060200190919050505b806001016000600050819055'
)
.
assertCallStack
(
'0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5
\
n(Contract Creation - Step 63)'
)
.
end
()
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment