[BTC-dev] mod6's V [in perl] version 99995 K with Cucumber Tests & Testing Guide Included
Shane Kinney
modsix at gmail.com
Sat Feb 20 19:12:23 UTC 2016
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/attachment-0001.txt?sha1=18e387d28c8bf379bf126d0c06ec92a426cfb03f>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
I'd like to announce a new version of V with Cucumber Tests: version 99995 K
!!! Please read the v_testing_guide.txt before proceeding any further with
!!! running the Cucumber automated tests.
Change Log for V version 99995 K:
0x01]: Changes the version number from v99996 to v99995.
0x02]: Updates the error message in the `validate_seals' subroutine.
0x03]: Removes superfluous tabs in `traverse_desc' and `traverse_ante'
subroutines.
0x04]: Fixes a defect in the `verify_pressed' subroutine. Upon checking of
the hash of a pressed source file, if the pressed source file hash
does not match the expected hash from the signed vpatch, V will throw
an error and exit. The source file in question, along with the expected
and actual SHA512 hash values with be written to stdout.
0x05]: Fixed a defect in the `add_desc_src_files' graphing subroutine.
0x06]: Removed two trailing whitespaces.
0x07]: Shortened up a line of code that exceeded 80 columns.
0x08]: Added a helper subroutine `death' to be called in place of `die'. This
subroutine will call `remove_tmpdir` and then `die'. This is intended
to reduce two required calls in the event of error to one.
0x09]: Added check for invalid vpatch was added to `build_map` subroutine. This
will aleart the user and then call `death' and report the error and the
vpatch in question.
0x0A]: Added a check in the `verify_pressed' subroutine to ensure the given HEAD
to press up to, and through, is indeed in the current flow list. If the
given HEAD is not found in the flow, V will then call `death' and report
an error.
0x0B]: Added the `origin' feature as seen in asciilifeform's [R.03] original
implementation [R.04] of V.
0x0C]: An infinite loop condition exists where a invalid vpatch is given to V
where the antecedent and descendant hashes are equal. A check for
this condition has been added and will now die citing the invalid vpatch.
0x0D]: An anti-fuzz measure was added to ensure the assigned values are
cleared when building the vpatch map in the `build_map` subroutine.
Cucumber Changes:
There were numerous additions and changes to the automated cucumber tests to
validate the defect fixes outlined in the above section.
Testing:
The changes denoted above were tested with the Cucumber automation tests:
all passed.
If you run into any issues or defects with this version please let me know
in #bitcoin-assets or via email.
The following files are attached to this email with their PGP signatures:
v.pl
v.pl.mod6.sig
v_quick_start.txt
v_quick_start.txt.mod6.sig
v_users_manual.txt
v_users_manual.txt.mod6.sig
v_testing_guide.txt
v_testing_guide.txt.mod6.sig
Command.pm
Command.pm.mod6.sig
v.feature
v.feature.mod6.sig
v_steps.pl
v_steps.pl.mod6.sig
cukes-V-20160220.tar.gz
cukes-V-20160220.tar.gz.mod6.sig
Enjoy!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (FreeBSD)
iQIcBAEBCgAGBQJWyK42AAoJEHIXBai3Hq2v2CoP/jWuOJdAmtG/sb2WLvKIdd2l
sDPkJO3u5SQv801CeHKX/IJV23WWRW/3DDsvPPoJJvajs12sB/Yqb2HGfb+HHVPE
ojfMvxK1r+DwkNp7uTzd2l1SWES6xCuf2b6i8FMTxjq1YwxAD911wIEGHSfPaSSy
lFKnSOIs7vAHp7xIHz7YJGAcOQt3mKsydicWDY/sK0cZSluva0W176IQ3OuKXYxf
5Bsl3vA9mWkzrwuVEeRhjcHBybkXG4sHbMqG21GYfB2VLD6Q2zkDMK5cKwkn884v
mGpOAd2mljrjbJtwaX5tg477CM1XrXH/YQSH2tJ5zV4oejguf2M7tuxu3ovea0HU
Qz/QiEBvw5x05Q1AXMT3W/2PavhyYKe6D7S64Qb2xzxe9rM1TWiz3e8IymNrJ6/g
gYN577HrHPFVIQTM0JuKhtHbE+RmL6L2dzQ7eHGUSt9/voINFFZRXv+R4Tsq/2Jq
4GtpEdo4O1pR2YHcoQpbFevNzvjfMbWiKkFVeVMg/ug0WYwvhXmPNnQLWU9HzgFu
WiKOsJRPk9+xE6Z+jxb2akyeqAXFNGaKkVc/6uGv/YxpeubSlF37W+rkaETGjbRT
3QvSpX9bSvxYo9a5mir5WydO/6As137Yr0lK0dVnUHph/ePZTlZgJr2ZN5Covr2k
1XoSxEpqdXMUu3jr6BlB
=WdT/
-----END PGP SIGNATURE-----
-------------- next part --------------
Name: v_quick_start.txt
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v_quick_start-0001.txt?sha1=39051c0cddbdc31450a48e1683c4ca4577eb7780>
..::[ The Bitcoin Foundation: V Quick Start ]::..
Doc Version: 99995 K
Author: mod6
Fingerprint: 0x027A8D7C0FB8A16643720F40721705A8B71EADAF
0x00]: Introduction
Welcome to V!
This document is intended for the advanced user. This will get you up and
running quickly with V.
0x01]: What's required?
0x010: perl 5.005 or greater
0x011: cpan | cpanm [CPAN | cpanminus]
0x012: Graph::Easy [Nice to have, not required]
0x013: graphviz [Nice to have, not required]
0x014: gpg [GnuPG]
0x015: wget
0x02]: Where do I get V ?
curl -s http://thebitcoin.foundation/v/V-20160220.tar.gz \
-o V-20160220.tar.gz
curl -s http://thebitcoin.foundation/v/V-20160220.tar.gz.mod6.sig \
-o V-20160220.tar.gz.mod6.sig
gpg --keyserver pool.sks-keyservers.net \
--recv-keys 0x027A8D7C0FB8A16643720F40721705A8B71EADAF
gpg --verify V-20160220.tar.gz.mod6.sig V-20160220.tar.gz
If the signature is good, now extract the archive.
tar -xf V-20160220.tar.gz
0x03]: How do I setup V?
First, set the executable bit on v.pl:
chmod +x v.pl
Next, create a WoT directory (V will look for '.wot' in the current working
directory by default):
mkdir -p .wot
Then, place WoT pubkeys into the '.wot' directory. Name the pubkey files
as such: <wotid>.asc
For example: mod6.asc
0x04]: It's my first time running V now what?
First, check the available signed mirrors:
./v.pl m mirrors
Then run the intial sync of the vpatches and seals from a given mirror:
./v.pl i http://thebitcoin.foundation
0x05]: Now that I've sync'd from a mirror, what's next?
The rest is up to you, either refer to the Users Guide for a detailed
description of each option in V or just execute V and read the long
help message:
./v.pl help
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v.pl
Type: application/x-perl
Size: 30386 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v-0001.pl?sha1=893186bccbed0661a4e5ea3466a7c118e4624d1b>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v.pl.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v-0001.pl.mod6.sig?sha1=5fdd6805b85052d36de966f96ecc9c9392b4ba79>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v_quick_start.txt.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v_quick_start-0001.txt.mod6.sig?sha1=5a1b6ce624952df9d21d3007c3d1ad2f0f0b99b8>
-------------- next part --------------
Name: v_users_manual.txt
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v_users_manual-0001.txt?sha1=6dab4e313050d4f4d7b4ef055a184aa9cc087fc0>
..::[ The Bitcoin Foundation: V Users Manual ]::..
Doc Version: 99995 K
Author: mod6
Fingerprint: 0x027A8D7C0FB8A16643720F40721705A8B71EADAF
0x00]: Introduction
Welcome to V!
This document is intended to be a users manual for mod6's perl implementation
of V. Contained herein the user will find usage explanations and examples of
the many options available.
0x01]: Getting Started
[ Check if perl is installed & version ]:
First, in order to execute the perl version of V, the user must have perl
version 5.005 or greater installed on the local UNIX environment. Perl
typically comes installed on many UNIX environments ahead of time, but just
to be sure, do the following from the command prompt:
perl --version
The user should see a lengthy version message that starts with something
like this:
`This is perl 5, version 18, subversion 2 (v5.18.2) ...'
If not, please install perl 5.005 or greater before going any further:
Ubuntu:
apt-get install -y perl
Gentoo:
emerge =perl-5.20.2.ebuild
[ Install CPAN ]:
If it is desired to at all use the graphing feature of V the user will need
to install CPAN [ `cpan` or `cpanm` or on gentoo, `g-cpan` ] so that the
Graph::Easy perl library can be installed.
Ubuntu:
apt-get install cpanminus
cpanm -i Graph::Easy
Gentoo [x86-64]:
emerge g-cpan
[ NOTE: Copy the next nine lines exacty as they are presented here and ]
[ then paste them into the shell. ]
cat <<EOF > /etc/portage/package.accept_keywords
# required by perl-gcpan/JSON-MaybeXS-1.003005::x-g-cpan
# required by JSON-MaybeXS (argument)
=dev-perl/Test-Without-Module-0.180.0 ~amd64
# required by perl-gcpan/Cpanel-JSON-XS-3.0115::x-g-cpan
# required by Cpanel-JSON-XS (argument)
=dev-perl/common-sense-3.730.0 ~amd64
EOF
g-cpan -i Graph::Easy
[ Install GnuPG ]:
The user will need GnuPG installed locally to run V, if you already have
this installed, skip this step.
Ubuntu:
sudo apt-get install -y gnupg
[NOTE: 1.4.19 seems to be the oldest portage a recent gentoo ships with)]:
Gentoo:
emerge =gnupg-1.4.19
[ Install wget ]:
Many UNIX systems come with `wget` installed already, if yours does not,
install it:
Ubuntu:
sudo apt-get install -y wget
Gentoo:
emerge wget
[ Install GraphViz ]:
In addition to Graph::Easy, if you wish to have V automatically build the
SVG graph in an HTML output file for you from the Dot language output file,
also output by V, you need to install GraphViz.
Ubuntu:
sudo apt-get install -y graphviz
Gentoo:
emerge -a graphviz
etc-update [ enter -5 when prompted ]
emerge -a graphviz [ Answer Yes at prompt ]
[ Download V Archive ]:
Now you must obtain the V archive & signature from:
http://thebitcoin.foundation/v/V-20160220.tar.gz
http://thebitcoin.foundation/v/V-20160220.tar.gz.mod6.sig
Then check the PGP signatures supplied:
wget http://mod6.net/mod6.asc -O mod6.asc
gpg --import mod6.asc
[ Key Fingerprint: 0x027A8D7C0FB8A16643720F40721705A8B71EADAF ]
gpg --verify V-20160220.tar.gz.mod6.sig V-20160220.tar.gz
Then unpack the archive:
tar -xf V-20160220.tar.gz
[ Start V for the first time ]:
First, set the executable bit on v.pl:
chmod 0755 v.pl
Before you get any further, create a '.wot' directory (V looks for '.wot'
in the current working directory by default) and populate it with PGP public
keys manually. Name the pubkey files as such: <wotid>.asc
For example: mod6.asc
Now have V sync the required Seals and Patches directories from a signed
mirror. To view the list of mirrors, run the following command, the output
you'll see below.
./v.pl m v_mirrors
Mirrors signed by (mod6):
http://thebitcoin.foundation
As stated from mirrors output we can use URL from The Bitcoin Foundation to
sync V up-to-date with all the latest WoT entries (PGP Public Keys), VPatch
Signatures (Seals) and Vpatches.
To begin this initial sync do the following:
./v.pl i http://thebitcoin.foundation
0x01]: V Usage
At this point the user has installed all of V's requirements, performed a
lookup of available signed mirrors, and sync'd the WoT, Patches and Seals.
What follows are usages and definitions of V's options with examples.
A note about option syntax. Any option enclosed with parenthesis ( ) is
required. The | separates any aliases of commands. Square brackets [ ]
denote optional options. Angle brackets < > denote required arguments to
a given command.
[ m | mirrors ]:
Arguments:
(<output_dir>)
The m or mirrors command is available to connect to the main V site:
http://thebitcoin.foundation Here, V can connect and pull the list of
available mirrors, signed by mirror administrators with L1 trust with
assbot and are in good standing in the WoT. Ask mod6 about this if you
want to run an authorized, signed mirror of V.
The mirrors command takes one required argument, an output directory for the
list of mirrors and the signatures so V can verify the list.
Example:
./v.pl m v_mirrors
Mirrors signed by (mod6):
http://thebitcoin.foundation
[ i | init ]:
Arguments & Options:
(mirror_url) [(<pdir> <sdir>)]
The i or init command is intended to be utilized the first time running V
on an environment. It takes one required option, and two optional
options. The required argument is a V mirror URL to sync from. Next, the
user can choose to use the default Patches ('patches' in the current working
directory) and Seals (.seals in the current working directory) directories
by not setting the two <pdir> or <sdir> options -- only passing a mirror URL
argument to the init command. If the user wishes to use their own named
directories, simply pass in those arguements in the exact order specified.
Example:
./v.pl i http://thebitcoin.foundation
Full vpatch sync complete to "/home/mod6/patches"
Seal sync complete to "/home/mod6/.seals"
Example:
./v.pl i http://thebitcoin.foundation wot vpatches seals
Full vpatch sync complete to "vpatches"
Seal sync complete to "seals"
[ wd | wotdir ]:
Arguments:
(<wotdir>)
The wd or wotdir command is available to point V at a specific WoT
directory rather than the default: '.wot' (in the current working directory)
There is one required argument: a WoT directory.
Example case, only mod6.asc exists in wot2:
./v.pl f wd wot2
genesis.vpatch (mod6)
bitcoin-asciilifeform.1.vpatch (mod6)
rm_rf_upnp.vpatch (mod6)
...
[ pd | patchdir ]:
Arguments:
(<patchdir>)
The pd or patchdir command is available to point V at a specific patch
directory rather than the default: 'patches', in V's present working
directory. There is one required argument: a vpatches directory.
Example case, only genesis.vpatch exists in patches2:
./v.pl f pd patches2
genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
[ sd | sealdir ]:
Arguments:
(<sealdir>)
The sd or sealdir command is available to point V at a specific seal
directory rather than the default: '.seals' (in the current working
directory)
There is one required argument: a seals directory.
Example case, only seals created by mod6 exist in seal2:
./v.pl f sd seals2/
genesis.vpatch (mod6)
bitcoin-asciilifeform.1.vpatch (mod6)
rm_rf_upnp.vpatch (mod6)
...
[ w | wot ]:
Options:
[ finger ]
The w or wot command will build a list of WoT entities eligable for
creating seals for approved vpatches. If a specific vpatch has not
been signed by a WoT entity, it is considered a 'WILD' vpatch. A vpatch
must be signed by both Co-Chairs of The Bitcoin Foundation to be considered
approved for release.
Example:
./v.pl w
asciilifeform:17215D118B7239507FAFED98B98228A001ABFFC7:Stanislav Datskovskiy <stas at loper-os.org>
ben_vulpes:4F7907942CA8B89B01E25A762AFA1A9FD2D031DA:Ben Vulpes <benkay at gmail.com>
mircea_popescu:6160E1CAC8A3C52966FD76998A736F0E2FB7B452:Mircea Popescu (Acest articol are apriori avantajul aliteralitatii alaturi.) <office at polimedia.us>
mod6:027A8D7C0FB8A16643720F40721705A8B71EADAF:mod6 (mod6) <modsix at gmail.com>
punkman:F28E0095843B91CB22E7D65533588BE08B232B13:punkman
trinque:FC66C0C5D98C42A1D4A98B6B42F9985AFAB953C4:Michael Trinque <mike at trinque.org>
./v.pl w finger
asciilifeform-B98228A001ABFFC7:17215D118B7239507FAFED98B98228A001ABFFC7:Stanislav Datskovskiy <stas at loper-os.org>
ben_vulpes-2AFA1A9FD2D031DA:4F7907942CA8B89B01E25A762AFA1A9FD2D031DA:Ben Vulpes <benkay at gmail.com>
mircea_popescu-8A736F0E2FB7B452:6160E1CAC8A3C52966FD76998A736F0E2FB7B452:Mircea Popescu (Acest articol are apriori avantajul aliteralitatii alaturi.) <office at polimedia.us>
mod6-721705A8B71EADAF:027A8D7C0FB8A16643720F40721705A8B71EADAF:mod6 (mod6) <modsix at gmail.com>
punkman-33588BE08B232B13:F28E0095843B91CB22E7D65533588BE08B232B13:punkman
trinque-42F9985AFAB953C4:FC66C0C5D98C42A1D4A98B6B42F9985AFAB953C4:Michael Trinque <mike at trinque.org>
[ r | roots ]:
The r or roots command takes no options or arguments, unless a different
pd or patchdir is specified. It simply traverses the vpatch directories
contained vpatches and returns any root vpatches found in the topological
order.
Examples:
./v.pl r
Root: genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
Examples:
./v.pl r pd patches2
Root: genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
[ l | leafs ]:
The l or leafs command takes no options or arguments, unless a different
pd or patchdir is specified. It simply traverses the vpatch directories
contained vpatches and returns any leaf vpatches found in the topological
order.
Examples:
./v.pl l
Leaf: asciilifeform_add_verifyall_option.vpatch (asciilifeform, mod6)
Leaf: asciilifeform_maxint_locks_corrected.vpatch (asciilifeform, mod6)
Example case, only genesis.vpatch exists in patches2:
./v.pl l pd patches2
Leaf: genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
[ f | flow ]:
The f or flow command prints a topoligical flow of vpatches based on
precedence. By default will look for the 'patches' directory in the present
working directory of V and print the flow to stdout.
Example:
./v.pl f
genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
bitcoin-asciilifeform.1.vpatch (asciilifeform, mod6)
rm_rf_upnp.vpatch (asciilifeform, mod6)
bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch (asciilifeform, mod6)
bitcoin-asciilifeform.2-https_snipsnip.vpatch (asciilifeform, mod6)
bitcoin-asciilifeform.4-goodbye-win32.vpatch (asciilifeform, mod6)
asciilifeform_dnsseed_snipsnip.vpatch (asciilifeform, mod6)
asciilifeform_zap_hardcoded_seeds.vpatch (asciilifeform, mod6)
asciilifeform-kills-integer-retardation.vpatch (asciilifeform, mod6)
asciilifeform_zap_showmyip_crud.vpatch (asciilifeform, mod6)
asciilifeform_dns_thermonyukyoolar_kleansing.vpatch (asciilifeform, mod6)
asciilifeform_and_now_we_have_block_dumper_corrected.vpatch (asciilifeform, mod6)
mod6_fix_dumpblock_params.vpatch (asciilifeform, mod6)
bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch (asciilifeform, mod6)
bitcoin-v0_5_3_1-rev_bump.7.vpatch (asciilifeform, mod6)
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch (asciilifeform, mod6)
asciilifeform_orphanage_thermonuke.vpatch (asciilifeform, mod6)
asciilifeform_and_now_we_have_eatblock.vpatch (asciilifeform, mod6)
bitcoin-v0_5_3-db_config.6.vpatch (asciilifeform, mod6)
asciilifeform_tx-orphanage_amputation.vpatch (asciilifeform, mod6)
asciilifeform_maxint_locks_corrected.vpatch (asciilifeform, mod6)
asciilifeform_lets_lose_testnet.vpatch (asciilifeform, mod6)
asciilifeform_add_verifyall_option.vpatch (asciilifeform, mod6)
Example case, only genesis.vpatch exists in patches2:
./v.pl f pd patches2
genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
[ p | press ]:
Arguments:
(<press_dir> <head>)
The p or press command is available to apply vpatches up through <head> in
topological order (see flow command) to an output directory <press_dir>.
There are two required arguments; an output directory for applied patches
<press_dir> and a vpatch <head> as the tip of the tree to press up through.
By default, no output is shown; however if the user supplies `v' or
`verbose' directly after the p or press command then the output from the
patching applcation process will be directed to stdout.
Example:
./v.pl p press_output genesis.vpatch
Example:
./v.pl p verbose press_verbose genesis.vpatch
genesis.vpatch
patching file bitcoin/.gitignore
patching file bitcoin/COPYING
patching file bitcoin/src/base58.h
patching file bitcoin/src/bignum.h
patching file bitcoin/src/bitcoinrpc.cpp
patching file bitcoin/src/bitcoinrpc.h
patching file bitcoin/src/checkpoints.cpp
patching file bitcoin/src/checkpoints.h
patching file bitcoin/src/crypter.cpp
patching file bitcoin/src/crypter.h
patching file bitcoin/src/db.cpp
patching file bitcoin/src/db.h
patching file bitcoin/src/headers.h
patching file bitcoin/src/init.cpp
...
[ ss | sync-seals ]:
Arguments:
(<mirror_url> <sdir>)
The ss or sync-seals command is avilable to allow the user to sync seal to
an alternative directory. Two arguments are required; the <mirror_url>
from which to sync and the alternative or existing seals directory <sdir>.
Example:
./v.pl ss http://thebitcoin.foundation seals2
Seal sync complete to "seals2"
[ sv | sync-vpatches ]:
Arguments:
(<mirror_url> <pdir> <vpatches>... )
The sv or sync-vpatches command is availabe to allow the user to sync one or
more individual vpatches to a alternative output directory. Three arguments
are required; the <mirror_url> from which to sync, the alternative or
existing directory <pdir> and one or more <vpatches>.
Example case, sync one vpatch to an existing patches directory:
./v.pl sv http://thebitcoin.foundation patches genesis.vpatch
genesis.vpatch sync complete to "patches"
Example case, sync more than one vpatch to an alternative patches directory:
./v.pl sv http://thebitcoin.foundation patches2 genesis.vpatch rm_rf_upnp.vpatch
genesis.vpatch sync complete to "patches2"
rm_rf_upnp.vpatch sync complete to "patches2"
[ sa | sync-all-vpatches ]:
Arguments:
(<mirror_url> <pdir>)
The sa or sync-all-vpatches command is avilable to allow the user to sync
all vpatches from a given mirror to an alternative output directory. Two
arguments are required; the <mirror_url> from which to sync and the
alternative or existing patches directory <pdir>.
Example case, sync all vpatches to the pre-existing patches directory:
./v.pl sa http://thebitcoin.foundation patches
Full vpatch sync complete to "patches"
Example case, sync all vpatches to an alternative patches directory:
./v.pl sa http://thebitcoin.foundation patches2
Full vpatch sync complete to "patches2"
[ se | sync-everything ]:
Arguments:
(<mirror_url> <pdir> <sdir>)
The se or sync-everything command is available to allow the user to sync
all patches and seals from a given mirror to either existing or alternative
directories. Three arguments are required; the <mirror_url> from which to
sync, the existing or alternative output patches directory <pdir>, and the
existing or alternative seals directory <sdir>.
./v.pl se http://thebitcoin.foundation patches2 seals2
Full vpatch sync complete to "patches2"
Seal sync complete to "seals2"
[ a | ante | antecedents ]:
Arguments:
(<vpatch>)
The a or ante or antecedents command is available to allow the user to view
the antecedents of a given vpatch. One argument is required, the name of a
<vpatch>.
Example:
./v.pl a mod6_fix_dumpblock_params.vpatch
Antecedent: asciilifeform_and_now_we_have_block_dumper_corrected.vpatch \
(asciilifeform, mod6) [ a/bitcoin/src/bitcoinrpc.cpp ]
Example case, examine the antecedents of a given vpatch from an alternative
directory:
./v.pl a asciilifeform_zap_showmyip_crud.vpatch pd patches2
Antecedent: asciilifeform_zap_hardcoded_seeds.vpatch (asciilifeform, mod6) \
[ a/bitcoin/src/net.cpp ]
[ d | desc | descendants ]:
Arguments:
(<vpatch>)
The d or desc or descendants command is available to allow the user to view
the descendants of a given <vpatch>. One argument is required, the name of
a <vpatch>.
Example:
./v.pl d mod6_fix_dumpblock_params.vpatch
Descendant: asciilifeform_and_now_we_have_eatblock.vpatch \
(asciilifeform, mod6) [ a/bitcoin/src/bitcoinrpc.cpp ]
Example case, examine the descendants of a given vpatch from an alternative
directory:
./v.pl d asciilifeform_zap_showmyip_crud.vpatch pd patches2
Descendant: asciilifeform_dns_thermonyukyoolar_kleansing.vpatch \
(asciilifeform, mod6) [ a/bitcoin/src/net.cpp ]
[ o | origin ]:
Arguments:
(<sha512_hash>)
The o or origin command is avaliable to allow the user to pass a sha512
hash and view where the given hash originated in the source tree.
[ g | graph ]:
Arguments & Options:
(<output_dotfile> [<output_svg_html_file>])
The g or graph command is available to produce a topoligical flow graph in
SVG format. The command has a required argument, the <output_dotfile>.
The output Dot language file can be used to generate the SVG HTML output
file with the `dot` binary. To produce the output Dot language file, the
perl library Graph::Easy must be installed on the local environment.
The optional command is given as a name for the <output_svg_html_file>.
If 'graphviz' is installed on the local environment, then the `dot` binary
should be available for V to invoke and generate the SVG HTML output for
the user automatically. If it is not possible for the user to install
'graphviz' on the local environment for whatever reason, the Dot language
output file can be copied to a seperate environment where 'graphviz' can be
installed. A command like this is used to generate the SVG HTML output
with the `dot` binary: `dot -Tsvg v-graph.dot > v-graph.html`.
Example:
./v.pl g vpatch.dot vpatch-graph.html
Printed Graphviz dot file to vpatch.dot
Executed `dot` and built svg html output file: vpatch-graph.html
Example case, build a graph from an alternative WoT, Patches and Seals
directory:
./v.pl g vpatch-graph2.dot vpatch-graph2.html wd wot2 pd patches2 sd seals2
Printed Graphviz dot file to vpatch-graph2.dot
Executed `dot` and built svg html output file: vpatch-graph2.html
[ v | version ]:
The v or version command simply prints the current version of V to stdout.
This command takes no options or arguments.
[ h | ? | help ]:
The h or ? or help command will print a longer, more verbose help message
to stdout. This command takes no options or arguments.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v_users_manual.txt.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v_users_manual-0001.txt.mod6.sig?sha1=cefbee833d877555212323909f5ecd39f36dbf21>
-------------- next part --------------
Name: v_testing_guide.txt
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v_testing_guide.txt?sha1=57d1b5931fd0da3fd3805893925651b054937655>
..::[ The Bitcoin Foundation: V Quick Start ]::..
Doc Version: 99995 K
Author: mod6
Fingerprint: 0x027A8D7C0FB8A16643720F40721705A8B71EADAF
0x00]: Introduction
Welcome to testing V!
This document is intended for the advanced user who wants to use the included
Cucumber tests to funcionally test mod6's perl version of V. This will get
you up and running.
First, A bit about Cucumber; Cucumber consists of to main parts: The test
scenarios which reside in a .feature file. The V feature file is called
`v.feaure'. (If viewing with Vi/ViM, use `:set nowrap' to make viewing a bit
easier as some data tables span 80 columns.) And the other main part is
step definitions. This is the code behind each of the Gherkin (denoted steps
with 'Given|When|And|Then' phases in the scenarios contained within the
feature file. Here, the step definitions are written with Perl. The step
definitions are contained in the file `v_steps.pl'.
To execute these Cucumber test scenarios, we need to setup our environment
to do so, this document will help you get up and running.
xxxxxxx
x xxxxxxxxxxxxx x
x xxxxxxxxxxx x
xxxxxxxxx
x xxxxxxx x
xxxxx
x xxx x
x
xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx
xxxxxxxxxxxxx xxxxxxxxxxxxx
xxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxx xxxxxxxxx
xxxxxx xxxxxx
xxx xxx
x x
x
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! ALERT:
!!!! BE ADVISED THAT THESE TESTS WILL EXERCISE V ON A GIVEN ENVIRONMENT AND
!!!! DURING THIS TESTING PROCESS WILL INTERACT WITH DEFAULT .wot (IN THE CURRENT
!!!! WORKING DIRECTORY), .seals (IN THE CURRENT WORKING DIRECTORY), AND patches
!!!! DIRECTORIES (IN THE CURRENT WORKING DIRECTORY). UPON COMPLETION OF THIS
!!!! TEST BATTERY A LAST SCENARIO WILL BE EXECUTED TO DELETE ALL OF THE USED OR
!!!! IMPACTED DIRECTORIES, INCLUDING, BUT NOT LIMITED TO THE DEFAULT
!!!! DIRECTORIES: .wot, .seals AND patches AND THEIR CONTENTS.
!!!!
!!!! IF YOU HAVE UNSAVED OR WORK OR WORK NOT BACKED-UP LAYING AROUND FROM
!!!! THIS OR ANOTHER VERSION OF V, TAKE STEPS TO BACK IT UP BEFORE YOU PROCEED!!
!!!! OR BETTER YET, RUN THIS IN AN ISOLATED ENVIRONMENT ALL BY ITSELF WHERE
!!!! NOTHING CAN BE IMPACTED! OR DO NOT RUN THIS AT ALL!
!!!!
!!!! YOU HAVE BEEN ADVISED.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0x01]: Setup Requirements for V
Please review the v_quick_start.txt or the v_users_manual.txt for requirements
of running V in your environment.
0x02]: Cucumber/Pherkin Setup Steps for Ubuntu & Gentoo
Ubuntu setup commands:
sudo apt-get install -y cpanminus
cpanm -i App::pherkin
cpanm -i Log::Log4perl
sudo apt-get install -y libtest-bdd-cucumber-perl gnupg sharutils curl
curl -s http://thebitcoin.foundation/misc/cukes-V-20160220.tar.gz \
-o cukes-V-20160220.tar.gz
gpg --keyserver pool.sks-keyservers.net \
--recv-keys 0x027A8D7C0FB8A16643720F40721705A8B71EADAF
gpg --verify cukes-V-20160220.tar.gz.mod6.sig cukes-V-20160220.tar.gz
tar -xf cukes-V-20160220.tar.gz
# There is only one line in the v.feature file to edit, line 6:
# Then I set the path to V as "/home/mod6"
# This line above defines where you extracted the cukes-V-v100000.tar.gz
# Set this line as necessary to your own environment.
# Finally, run the following command
perhkin v.feature
############################################################################
Gentoo:
# Run these commands as root (uid 0)
emerge g-cpan
# Add the following 6 lines to: /etc/portage/package.accept_keywords
# required by perl-gcpan/JSON-MaybeXS-1.003005::x-g-cpan
# required by JSON-MaybeXS (argument)
=dev-perl/Test-Without-Module-0.180.0 ~amd64
# required by perl-gcpan/Cpanel-JSON-XS-3.0115::x-g-cpan
# required by Cpanel-JSON-XS (argument)
=dev-perl/common-sense-3.730.0 ~amd64
g-cpan -i App::pherkin
g-cpan -i Log::Log4perl
emerge net-misc/curl
emerge sharutils
emerge =gnupg-1.4.19
# Run these commands as non-root user
curl -s http://thebitcoin.foundation/misc/cukes-V-20160220.tar.gz \
-o cukes-V-20160220.tar.gz
gpg --keyserver pool.sks-keyservers.net \
--recv-keys 0x027A8D7C0FB8A16643720F40721705A8B71EADAF
gpg --verify cukes-V-20160220.tar.gz.mod6.sig cukes-V-20160220.tar.gz
tar -xf cukes-V-20160220.tar.gz
# Create a '.wot' directory in the current working directory and place the
# necessary and appropriately named public keys in there.
# There is only one line in the v.feature file to edit, line 6:
# Then I set the path to V as "/home/mod6"
# This line above defines where you extracted the cukes-V-20160220.tar.gz
# Set this line as necessary to your own environment.
# Finally, run the following command
pherkin v.feature
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v_testing_guide.txt.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v_testing_guide.txt.mod6.sig?sha1=3ce4188d6cd4fd6bbf1c396faa38b1f5d54a4ac0>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Command.pm
Type: application/x-perl
Size: 4402 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/Command.pm?sha1=3813b45e397958efebb472fe483f273f1f62dab7>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Command.pm.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/Command.pm.mod6.sig?sha1=fc47ab239ea33b98416f6ededcfc7fc1c53fb469>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v.feature
Type: application/octet-stream
Size: 61550 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v.feature?sha1=ae9574137418ea002b7946586399b18eecca8f09>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v.feature.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v.feature.mod6.sig?sha1=dc8f850f7f5b66c4538b418fbe2d9241e862743a>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v_steps.pl
Type: application/x-perl
Size: 55156 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v_steps.pl?sha1=c5d01dffba7da0fb70df64265eacae850ae12927>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v_steps.pl.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/v_steps.pl.mod6.sig?sha1=320db9177bfe48439ec5a03a2c143c938cd2b8f9>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cukes-V-20160220.tar.gz
Type: application/x-gzip
Size: 40588 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/cukes-V-20160220.tar.gz?sha1=5b2e05418186070a69114ce963f776c4ee2f0721>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cukes-V-20160220.tar.gz.mod6.sig
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://therealbitcoin.org/ml/btc-dev/attachments/20160220/cukes-V-20160220.tar.gz.mod6.sig?sha1=a1f456e45a4f2b02913b0dccf2e25dbee9b7c4a1>
More information about the BTC-dev
mailing list