Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
56acafc2
Commit
56acafc2
authored
Nov 06, 2022
by
Matthew Slipper
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
testmig: Remove in favor of op-e2e
parent
9940c8cd
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
0 additions
and
285 deletions
+0
-285
requirements.txt
testmig/requirements.txt
+0
-45
setup.py
testmig/setup.py
+0
-19
__init__.py
testmig/testmig/__init__.py
+0
-0
cli.py
testmig/testmig/cli.py
+0
-125
contracts.py
testmig/testmig/contracts.py
+0
-18
log_setup.py
testmig/testmig/log_setup.py
+0
-30
util.py
testmig/testmig/util.py
+0
-48
No files found.
testmig/requirements.txt
deleted
100644 → 0
View file @
9940c8cd
aiohttp==3.8.3
aiosignal==1.2.0
async-timeout==4.0.2
attrs==22.1.0
base58==2.1.1
bitarray==2.6.0
certifi==2022.9.24
charset-normalizer==2.1.1
click==8.1.3
cytoolz==0.12.0
docker==6.0.0
eth-abi==2.2.0
eth-account==0.5.9
eth-hash==0.5.0
eth-keyfile==0.5.1
eth-keys==0.3.4
eth-rlp==0.2.1
eth-typing==2.3.0
eth-utils==1.9.5
frozenlist==1.3.1
hexbytes==0.3.0
idna==3.4
ipfshttpclient==0.8.0a2
jsonschema==4.16.0
lru-dict==1.1.8
multiaddr==0.0.9
multidict==6.0.2
netaddr==0.8.0
packaging==21.3
parsimonious==0.8.1
protobuf==3.19.5
pycryptodome==3.15.0
pyparsing==3.0.9
pyrsistent==0.18.1
requests==2.28.1
rlp==2.0.1
six==1.16.0
toolz==0.12.0
tqdm==4.64.1
urllib3==1.26.12
varint==1.0.2
web3==5.31.1
websocket-client==1.4.1
websockets==9.1
yarl==1.8.1
testmig/setup.py
deleted
100644 → 0
View file @
9940c8cd
from
distutils.core
import
setup
from
setuptools
import
find_packages
setup
(
name
=
'testmig'
,
version
=
'1.0'
,
description
=
'Bedrock migration tester tool'
,
install_requires
=
[
'click==8.1.3'
,
'docker==6.0.0'
,
'web3==5.31.1'
,
'requests==2.28.1'
,
'tqdm==4.64.1'
],
packages
=
find_packages
(
include
=
[
'testmig'
,
'testmig.*'
]),
entry_points
=
{
'console_scripts'
:
[
'testmig=testmig.cli:group'
]
}
)
testmig/testmig/__init__.py
deleted
100644 → 0
View file @
9940c8cd
testmig/testmig/cli.py
deleted
100644 → 0
View file @
9940c8cd
import
logging
import
os
import
shutil
import
time
from
pathlib
import
Path
import
click
import
docker
import
docker.errors
from
web3
import
Web3
from
testmig.contracts
import
SLOTS_TO_MODIFY
from
testmig.util
import
download_with_progress
,
run_command
import
testmig.log_setup
URL_PREFIX
=
'https://storage.googleapis.com/optimism/snapshots/mainnet/2022-10-24-1'
default_monorepo_dir
=
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
getcwd
(),
'..'
))
log
=
logging
.
getLogger
()
@
click
.
group
()
def
group
():
pass
@
group
.
command
()
@
click
.
option
(
'--monorepo-dir'
,
required
=
True
,
type
=
click
.
Path
(
exists
=
True
),
default
=
default_monorepo_dir
)
@
click
.
option
(
'--snapshot-cache-dir'
,
required
=
True
,
default
=
'/tmp/testmig-snapshots'
)
@
click
.
option
(
'--work-dir'
,
required
=
True
,
default
=
'/tmp/testmig-workdir'
)
@
click
.
option
(
'--l1-url'
,
required
=
True
,
default
=
os
.
getenv
(
'TESTMIG_L1_URL'
))
@
click
.
option
(
'--reset-work-dir'
,
required
=
True
,
default
=
False
)
def
run_forked
(
monorepo_dir
,
snapshot_cache_dir
,
work_dir
,
l1_url
,
reset_work_dir
):
if
not
os
.
path
.
isdir
(
snapshot_cache_dir
):
os
.
makedirs
(
snapshot_cache_dir
)
if
reset_work_dir
:
shutil
.
rmtree
(
work_dir
)
os
.
makedirs
(
work_dir
,
exist_ok
=
True
)
historical_mainnet_path
=
os
.
path
.
join
(
monorepo_dir
,
'packages'
,
'contracts-bedrock'
,
'deployments'
,
'mainnet'
)
if
os
.
path
.
isdir
(
historical_mainnet_path
):
log
.
info
(
'Removing historical mainnet deployment'
)
print
(
historical_mainnet_path
)
shutil
.
rmtree
(
historical_mainnet_path
)
for
archive
in
(
'dtl'
,
'geth'
):
fp
=
os
.
path
.
join
(
snapshot_cache_dir
,
f
'{archive}.tar.gz'
)
if
os
.
path
.
isfile
(
fp
):
log
.
info
(
f
'{archive} archive already exists, not downloading'
)
else
:
log
.
info
(
f
'Downloading {archive} archive'
)
with
open
(
fp
,
'wb+'
)
as
f
:
download_with_progress
(
f
'{URL_PREFIX}/{archive}.tar.gz'
,
f
)
outpath
=
os
.
path
.
join
(
work_dir
,
archive
)
donefile
=
os
.
path
.
join
(
outpath
,
'DONE'
)
if
os
.
path
.
isfile
(
donefile
):
log
.
info
(
f
'{archive} is already extracted'
)
else
:
log
.
info
(
f
'Extracting {archive} archive'
)
os
.
makedirs
(
outpath
)
run_command
([
'tar'
,
'-xzvf'
,
fp
,
'--strip-components=6'
,
'-C'
,
outpath
])
Path
(
donefile
)
.
touch
()
client
=
docker
.
from_env
()
try
:
container
=
client
.
containers
.
get
(
'testmig-l1'
)
container
.
stop
()
container
.
remove
()
log
.
info
(
'Stopped and removed old containers'
)
except
docker
.
errors
.
NotFound
:
pass
log
.
info
(
'Starting forked L1'
)
container
=
client
.
containers
.
run
(
'ethereumoptimism/hardhat-node:latest'
,
detach
=
True
,
environment
=
{
'FORK_STARTING_BLOCK'
:
'15822707'
,
'FORK_URL'
:
l1_url
,
'FORK_CHAIN_ID'
:
'1'
},
name
=
'testmig-l1'
,
ports
=
{
'8545/tcp'
:
(
'127.0.0.1'
,
8545
)})
w3
=
None
for
i
in
range
(
0
,
10
):
try
:
w3
=
Web3
(
Web3
.
HTTPProvider
(
'http://127.0.0.1:8545'
))
w3
.
eth
.
get_balance
(
'0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
)
except
Exception
as
e
:
log
.
info
(
'Polling for L1 to come up'
)
w3
=
None
time
.
sleep
(
1
)
if
w3
is
None
:
raise
Exception
(
'Could not connect to Web3.'
)
log
.
info
(
'L1 is ready'
)
for
slot
in
SLOTS_TO_MODIFY
:
log
.
info
(
f
'Setting storage slot on {slot[0]}'
)
w3
.
provider
.
make_request
(
'hardhat_setStorageAt'
,
slot
)
log
.
info
(
'Mining a block for good measure'
)
w3
.
provider
.
make_request
(
'evm_mine'
,
[])
log
.
info
(
'Running L1 migration'
)
run_command
([
'yarn'
,
'hardhat'
,
'--network'
,
'mainnet-forked'
,
'deploy'
,
'--tags'
,
'migration'
],
env
=
{
'CHAIN_ID'
:
'1'
,
'L1_RPC'
:
'http://127.0.0.1:8545'
,
'PRIVATE_KEY_DEPLOYER'
:
'ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'
,
},
cwd
=
os
.
path
.
join
(
monorepo_dir
,
'packages'
,
'contracts-bedrock'
))
log
.
info
(
'Cleaning up'
)
container
.
stop
()
container
.
remove
()
if
__name__
==
'__main__'
:
group
()
testmig/testmig/contracts.py
deleted
100644 → 0
View file @
9940c8cd
ADDRESSES
=
{
'Lib_AddressManager'
:
'0xdE1FCfB0851916CA5101820A69b13a4E276bd81F'
,
'Proxy__OVM_L1StandardBridge'
:
'0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1'
,
'Proxy__OVM_L1CrossDomainMessenger'
:
'0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1'
,
}
DEPLOYER_ADDR
=
'0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
DEPLOYER_ADDR_PADDED
=
'0x000000000000000000000000f39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
SLOTS_TO_MODIFY
=
(
# _owner slot
(
ADDRESSES
[
'Lib_AddressManager'
],
'0x0'
,
DEPLOYER_ADDR_PADDED
),
# proxy owner slot
(
ADDRESSES
[
'Proxy__OVM_L1StandardBridge'
],
'0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103'
,
DEPLOYER_ADDR_PADDED
),
# owner slot on the underlying implementation
(
ADDRESSES
[
'Proxy__OVM_L1CrossDomainMessenger'
],
'0x33'
,
DEPLOYER_ADDR_PADDED
)
)
testmig/testmig/log_setup.py
deleted
100644 → 0
View file @
9940c8cd
import
os
from
logging.config
import
dictConfig
log_level
=
os
.
getenv
(
'LOG_LEVEL'
)
log_config
=
{
'version'
:
1
,
'loggers'
:
{
''
:
{
'handlers'
:
[
'console'
],
'level'
:
log_level
if
log_level
is
not
None
else
'INFO'
},
},
'handlers'
:
{
'console'
:
{
'formatter'
:
'stderr'
,
'class'
:
'logging.StreamHandler'
,
'stream'
:
'ext://sys.stdout'
}
},
'formatters'
:
{
'stderr'
:
{
'format'
:
'[
%(levelname)
s|
%(asctime)
s]
%(message)
s'
,
'datefmt'
:
'
%
m-
%
d-
%
Y
%
I:
%
M:
%
S'
}
},
}
dictConfig
(
log_config
)
testmig/testmig/util.py
deleted
100644 → 0
View file @
9940c8cd
import
os
import
socket
import
subprocess
import
time
import
requests
from
tqdm
import
tqdm
def
download_with_progress
(
url
,
f
):
res
=
requests
.
get
(
url
,
stream
=
True
,
allow_redirects
=
True
)
total_len
=
res
.
headers
.
get
(
'content-length'
)
if
total_len
is
None
:
raise
Exception
(
'no total length, bailing out'
)
total_len
=
int
(
total_len
)
with
tqdm
(
total
=
total_len
,
unit
=
'b'
,
unit_scale
=
True
)
as
pbar
:
for
data
in
res
.
iter_content
(
chunk_size
=
4096
):
f
.
write
(
data
)
pbar
.
update
(
len
(
data
))
def
run_command
(
args
,
check
=
True
,
shell
=
False
,
cwd
=
None
,
env
=
None
):
env
=
env
if
env
else
{}
return
subprocess
.
run
(
args
,
check
=
check
,
shell
=
shell
,
env
=
{
**
os
.
environ
,
**
env
},
cwd
=
cwd
)
def
wait_up
(
port
,
retries
=
10
,
wait_secs
=
1
):
for
i
in
range
(
0
,
retries
):
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
try
:
s
.
connect
((
'127.0.0.1'
,
int
(
port
)))
s
.
shutdown
(
2
)
return
True
except
Exception
:
time
.
sleep
(
wait_secs
)
raise
Exception
(
f
'Timed out waiting for port {port}.'
)
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