Run 4 nodeos instance, 1 eosio bios node, 3 BP nodes, with producer names bp1 bp2 bp3.
cleos set contract eosio contracts/eosio.bios
cleos create account eosio eosio.token PUBKEY PUBKEY
cleos set contract eosio.token contracts/eosio.token
cleos push action eosio.token create '{"issuer":"eosio", "maximum_supply": "1000000000.0000 EOS", "can_freeze": 0, "can_recall": 0, "can_whitelist": 0}' -p eosio.token
cleos push action eosio.token issue '{"to":"eosio","quantity":"100000000.0000 EOS","memo":"issue"}' -p eosio
cleos set contract eosio contracts/eosio.system
cleos system regproducer bp1 Pubkey_of_bp1 http://bp1-website.com
cleos system delegatebw voter1 voter1 "25000000 EOS" "25000000 EOS" --transfer
voter1 votes for bp1, bp2 and bp3.
cleos system voteproducer voter1 bp1 bp2 bp3
cleos system listproducers.
Once no less than 15% EOS has been staked and voted, Producers will auto shift to bp1, bp2 and bp3, eosio will stop producing blocks