The core protocol of WoopChain
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
woop/eth/rpcCmpTest.go

109 lines
2.1 MiB

package main
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
"time"
)
func Test10KB() {
url := "http://127.0.0.1:9500"
var method = "624fbfdc"
var loc = "0000000000000000000000000000000000000000000000000000000000000020"
var size = "0000000000000000000000000000000000000000000000000000000000002710"
var value = "796d63656168796d78746f6f6c63727a62686d666e64636367676a6d7a6a7170756368627076626f756777616c636e637a6c6f6a766c6b786d7a617a7273766671766f6769636f64736c6b72786669686a6c616c7465697266706a71686c74786975647763736f6a626c65786f70696a667679636b71737a79786a6d796d7966697464706366787a61797a72716361616d63636979707075636e757167616163796b69707776796e677571776172756d646d616c6963716d70707963746c626f6e71656d78696b627273696a6f6964797265696d7263706362796769616571696d636c716775626b766d68736c6f6362776c706d6e756c766e74616962717a626e656a746564716c76666271777373657970717671796376666a7a66667963747a6d747477736e656c736d696271646277776c766b6573747368706f6a6d7362657a6f76677673687a7a657a71726866666c6a6e72717767676379716b64726b7476787175697679616d736b706878756768687168636a61716e616d656d6374747374737076796e6c68677967667672776863757068677765636f6363656973647863697378676f76666c7564717a696961696477756262786c796d796c73626661696e6c67786a737a67616164627967656d6e76676f61676664686777756878706d6c6c766973666f727163777366796e6f6d707679786f62646f7577787362696e69657173716f7a6c757176646d67646b6d7a64706f6d66746573797a6967637a716f6c6763786276776576656d7366796f656b77726e687a636e6d756f617875736a71766e79786874696c6d6c7877716c7862637166646577616b74786a617465796b6967666f637467706e736e7571747a6378776175726e676b6a70766978796d6f6b746a6774776579657a6d6f6c6f6e7869727364706871627264787568776c757475716c716a65766965786f676778796f66717675677375716f7168736868717877727464696c6f68786b6b6d6d6a65617a64686d62676968706962676a796e6c686b7a656d737879686a756165636c65656b6a716e667364787365717266707872686c686d66676d626a78706a676f67796f617665676372786a637a72696b7378676364686a7678726c6c687770736b756f706671727a67676276656374797978706a62627a6c6f6b736170646e746579756a7378766371647770747668656a67777464756170706f627973786b6d6d74727562757a7470636b626d756b6d64646567646f6461797061626f62746b79756d7a686c6f7475656f61726377736b736c72766a71747968626d637a627974766d77716e646c6767796a697a6476766c6476666b65786d7661696e64696f6379666d696c7a79656a706a68616e757979666d65766e6a6c6776626e72646d626e636a786b79656f756d64746779747179726f6265627a6b64717375786f7273666f7262796c6e71717a736175646c767a656268767577716766686f776e747479627869687376737678776b6868746274777472686f6d6f647762737267666864666b71757074736c786c796e617966706f69737572767569776d6f756e6a726d6c65727a616b7a787063676f646b6f736a7973696477757a6d6e697777756d71636b7475626d706c6d7472616378697663636b72696e6f6668676a746e6477616778736a71686b6575627679636d686e6b6f6971636561776163716664717862756d63746c6174767174656d6d6769637867787575637a667461787071746162786d79767375696e6e666d796f73646a76666b7a6262796962786a71737264626c627471636b776b63656474627a626378657463676273626666726d656a6f6c7a6f68616e6474727675727a76746e676d68756d7763787062777062676d79646c7a656d67767a7769636c70666574797a6f6c6577717474796d786e6f74717a73726f746e6d6c7175666966647865656f766868686e6a73766b75656d726c7073736b686a72666a6e686178646674636f69786a6365686a6b70757a787a71646c6876657162746c757a656e616b7a787969716b627379626b7a75686d62786b79766365666962667169627863766b69746f766e6c6a6f7174796f6b61676b6c766d6f74636b62616f6762636977716c736868747869657a707277777272636d726d746e61697378726970716f6862776971796d67646f64696b6b6d667676716d6869716c78717773676566726b717775766b7574647262647178786f6e6a77726c77716a6366696f73656a736b7565616b7364616e6b6f6b7875707866766d617a6b6f6c73787467616664657a6c766d6f6b676a67676a706a6c6376707969616e6d697766626c7672626c6265627070677265757a697068746b73686d6377726a63697879707a66656277656461736f69777964776f727a7a6e64667a6d6e716371707261736f6e6471657362717576666b6666767962696c676c6677756f6d6f70636469676d7575776f637862746e6879766f62676d68696e6f62656366716975747a6e75676465756e70636b736c666f6e61706f63727a6667786e6e6d6d626f77666674767875787a69776f7a786177617165746b7a766268696d6278787272796d7a7a6c636c6362626a6a7667716c6179636570686c6276616f6e70696e736f74676a6773646f70756a776d7861726278727a72756e6a7a73716e69676663737a677377746a7868666d6165776866717064637a636a667a70786761756c6a6f78676c616a68636c6a6972636b71746a686776676f6a6c77736573786c66646b776262786f6362796166667a777764747a7164746d7272797a71716e6
var data = fmt.Sprintf("0x%s%s%s%s", method, loc, size, value)
var payload = fmt.Sprintf("{\"jsonrpc\": \"2.0\",\"id\": 1,\"method\": \"hmyv2_call\",\"params\": [{\"to\": \"0xB75DA069E82064e0c9895b11F571aD99FDFd231D\",\"data\": \"%s\"},\"latest\"]}", data)
var jsonStr = []byte(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
var avgTimeNS int64
fmt.Println("Using a 10KB payload for testing: ")
for i := 1; i <= 10; i++ {
start := time.Now()
resp, err := client.Do(req)
if err != nil {
panic(err)
}
end := time.Now()
timeTaken := end.UnixNano() - start.UnixNano()
avgTimeNS += timeTaken
fmt.Printf("%d attempt, time taken: %d\n", i, timeTaken)
ioutil.ReadAll(resp.Body)
resp.Body.Close()
}
fmt.Println("Average time taken(in Ns) over 10 iterations: ", avgTimeNS/10)
}
func Test100KB() {
url := "http://127.0.0.1:9500"
var method = "624fbfdc"
var loc = "0000000000000000000000000000000000000000000000000000000000000020"
var size = "00000000000000000000000000000000000000000000000000000000000186A0"
var value = "786d6c62686b767a73656f726b6d736e76616a6f676a7362676d727a627a766164756b70616571727269776f716d727362667678747077637a6979726e64787a6a6271676c77757a6b77797268796965756970706669726567636678776e63616c6867626f66677577617465756177707168716e6666736a796d666b736c7a73716a61716a6b627262636a69727a66767164676d6f7570716f687366706a6f6a6e766d717a666a757765766771627a6d6b696f70686c7a686679676471796a6d6c6f65746478687872616e677a6161726178746b617970756b7574736b6a75646563696f6b6c6d6b6f65666f627a6f63676b676e746f656b627475676867767266646b637071616f7165656d75656661756866647a7365616877636f6166677270726f6c78706e6b6662716861787979696669626573626e6b73786d7665756d63776b657465646e637a6861706f756f79646b626971796a62726b78676b6c6d73636d726f6374746e6663697573716b74726f6a6e727375756e6f62786b6f666775797871627463746d7669796d6e6f737064736469756d6b6e7763706475707a7778786e6b76716a757a72666d676a7a7370777a75686d716f6d78797666696d676f6e656d626572726367626f646d66647a73776270777369746469696c737067676867747965687779616b6c677471777873756a726d7a68736564787375707679636f6966746f62627071626d656f6d64767374776d7977776664636e776777666472626b7671616e666378676f797174646a796d6e7270726b6663726a67647572616767707a7169697476676e6e626b7a7a6f7274797a6a6d6770796a66777173636c72766a657a74637a6b73777972687374656a7671726d61666c696f6a7a7a6b75626c7175657974666c6164756465656d786c786d787371666173716269696e747376646f6d616a6b617968666a626372687568686877667467797461786474796c6e68636e776964626e7166647a6e7a6c636f6976757071656f6c72796e6d6c75736c74636f697664737970647a747a68627365746b7165676d6764626a6a6c6176616863736d6c6f7762716c77666f6463697177646b73626c6a79766d66676f6a7274727265766b726567796768796a75796d68647565676a6b657673667a6962646673757465737963656162667a6f6971706673646c706e67746373736962626f6f6768706a6973766471767174616368656c79737a6a6a627979707269667a656a70757365646b7261636261616b616f7972756e62767376726966646d626e6b617177617074757166646f6c716d6d7163696479796361727a6d7566777473626462667363737370687169716e7771706c6d67746c766b686965746978686f7877787262646c6d727162666a7a7a647374717a70616d6b62716a62696761637464626a7563656b65737365776367717a76766d7170676e626c637a6279776d75626d6b776266787168727a726d646f66776461616875776b786b68787a6b786a6c6a756963616b72616c7565646d687877746d786569666c7268787173677163647a6863677773626962726e6d637568696c726f7066686d7571797a69786a6e7a767166767962696d796e6b7a736f6c79797772787a71666969647579737672756967686a646f6f6261637171646479696472676a77766e6b6c767265707975656664647a626a647066706c756668757765667470786b636273646f66706c63736473626c77786f68766863696c6f7a7375697965626565717a636e69746270706379747668786e7272766c6a716f756a6e736a6962626a626b6f6a666e696f7177686270636e7167797061716c6f757767796672636c756f74697272746d6e6d7161796a626d6f70796d6866666666706a6b7071727470666d75736f756a6c64767964616f7062757969746f7764796f69766b707678786e727a70746d73637277686b69656879757a776d6c656267736267787569626a6b6c75667972706a76677065656765716c6461756878756d726468676c61736f687169706366627a6b686e68776f6f71676c747475766762647866767779736c636974666f6f796e63767774756c6a6a6d6e6e77636c72676e756e6172776977727a747573786c76647a7179766f66686f6578776569647a646c73646c616d6e616f78726d6671736e636f74736773696d736974726d6f746774636677706269676a6c6a767977757171626663656f63766479777570676a707a797967676868717961786161777765746b696a6f6d6c76617061656d717a6168656c736c69756a7966757371726368767071666a696c646179747a6e6471626872636b637a6569656a6870666a6f67647075636367627778706a786d747573696970656c766870777865716f64696c6d70626e6e796c647a66796868697169727a6f7a756a746b7374616f786d78626c6e696463666d627a6666647a686264717379616877647a6b6c676b6b6e6b6b786d63747564686966676a6f726b6f726877696475767a6979657779657a6770726e7372676a656270696b646a73656b666e6778676e7375787a746f707a74767270707267616169636861786b77796e786f646b71746a6e7a77656d6f686e726e666463666464646761666b6677617964736e6462747566736e697178636b6271756d677a616777616a7876636d6361766f6e636d717370756465736f73736e7967767a676c7172786b6a6a6e6d6469686c696477646d74697474716678617a68706e66706563756c777565776d62756e686e7a706a6c6b6d6f6f716770746d62676b706c6f7a6663686d617a636
var data = fmt.Sprintf("0x%s%s%s%s", method, loc, size, value)
var payload = fmt.Sprintf("{\"jsonrpc\": \"2.0\",\"id\": 1,\"method\": \"hmyv2_call\",\"params\": [{\"to\": \"0xB75DA069E82064e0c9895b11F571aD99FDFd231D\",\"data\": \"%s\"},\"latest\"]}", data)
var jsonStr = []byte(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
var avgTimeNS int64
fmt.Println("Using a 100KB payload for testing: ")
for i := 1; i <= 10; i++ {
start := time.Now()
resp, err := client.Do(req)
if err != nil {
panic(err)
}
end := time.Now()
timeTaken := end.UnixNano() - start.UnixNano()
avgTimeNS += timeTaken
fmt.Printf("%d attempt, time taken: %d\n", i, timeTaken)
ioutil.ReadAll(resp.Body)
resp.Body.Close()
}
fmt.Println("Average time taken(in Ns) over 10 iterations: ", avgTimeNS/10)
}
func Test1MB() {
url := "http://127.0.0.1:9500"
var method = "624fbfdc"
var loc = "0000000000000000000000000000000000000000000000000000000000000020"
var size = "00000000000000000000000000000000000000000000000000000000000F4240"
var value = "6c777570706d6665796d66707961767a7a6f636f71686c78667662667963666c68776a6f6a6e706d766e6f61786964667377717770636c79646d626a77667976677a6a6276617366736169666d69636d637079776e6e6a6d627076646979657271766679797076677669697375616f6f77747965626e726b7562697763616e647179756f63786c6a757475757478686d67696a6a72727668746d657461726f7265706d616f6d65666b6b7277616565696372757369616c777977776e7077636c736761676d7279657878666361686471726f6162707367706b696d766c656e6b62796f6d7661767a646b6e65786167636e6173716f6961796f7474757a6d6677707673746d73696c747a7266657570666b6b74757379786b6a7a6171647070776261706371746176637662777a706b6d716e6f79787571656a6164746d69756161696c677a6b6370636971796767746e61626a6e7362707a6c706972796167696161776e7762717273746c6661786c6a7478646a707961617770777a72647175736876716d65756f62736e6c61746b6c6574657477757574747376676b6775616270636479687a63716873726a68776f726f76616b6462767564656763716f6a6e656561666f78677572746677706c68747171717170647a6c6b786e666f7a6a7464676d73627276766366696a796e6a63706865626a71687a776c7479717171696378656268687568756f6f706b63686f73776a6d63787979667174646c6c7979787568716373716774667a6266746e6476617676656774787979767677776273626b6169777675796c6c72717a76676f736874657a6b72676470747566706a6a6b69686772776d64677562667361746875666f6574676a726c6962786365706f6a6664616a64776f7475676662786472666b6171616c7a6a766b6a7573786f786a636275737677636c686a787271696d62677a6c676a6b6664646975726969666c66667a6773796d61706b6f6773666e65756565797a6c6572796f7572776d7863746c636b6d676977797862656d63666f70756f6a6166787a7372736e6c706a747666636e6c6e696c72626f6f70796474657a71747a646e726b727776736967716a656775637879787673726c6a7861687a677673717373736a736d6b6377706a6f677477756c656b616e756b7372737575776d7470656f62746166736b7065666e75766675667a676170707a706c7663746178756a796b6963647a757866706b6462616b767a6a6a71636d6978696c657865676e7a6d6c75756674696c656277766d62776b7a73687a777a76726b69666779696d616c6e6774786a74646b63736a716b687167656a6e6c757673676272666a6b6f6c7a676b6b797771736167646e6f77717263676178716a676d6e7a6e767a6a6f646a6477696e7a6b736663686963706e7a666470787a6d73696c67667372686e65667571697876656372756d656778666266646b66726262796d716d667165626d6d626772727174797a7a7166666363627a796e747077716677766e64666a646c666d73657a7a6a6c707a75796a68736e6763646e69627a7a6b7967657a79666f69797062787a6b627a6c78626377647979766f6a72797a6d706d6965646174656b6b6573647a7573616c76726a7264616e626f6a69636371786a766b6d6f65636478737869776a646a6964786c636a6f7664656563707a64717470797a6266627278676d76736d736971676f6b6d6e6e7474646d6e6f6b716472737379736b6e687366686866676e6e6a6c636a6d6472667a6a656a786667747964696b6f70657665676e766f78726e7779736a6e636e637a67666b72726c73746e717369736b67716977736b6b736f79616273697773637869636767617764616174796f707873627964706d6f6864736b7975637361686f76776f696d7a77796c676a63786c696463796e7069626b6d706176646d737563676e6f6363696e787366746f746d72677362676f726d616e766e7568766461726477666a6968676a63676e646b73636d696c646f6e70697279736b6f646461766161646e726f6e67687375656a6261766764717079767970796a627664716a7a756d6d68696967647867696778626863626b6d6d706c626f796578686a7a777363666779646573636272686d646e6a75736a7067656b65617672736577696e746a6a6e79717072786378666b7072616e7965666f6270706164617a637a68726d6867716a6f7a76746e616473636b616a6262746b6e74656c6f64686c6d766f6478696c7a6f74646e7a6c73787474636e677065796f6b6463767565656b7375636c657a686376727577746b677162747063636a72707171647462696262696662617464797a65787775716c6169686874676b73706f6b6e6b7a706464656e6c7177726b6d64676e79716d796a6261617877646c7475676162796d6c6a696e656e616d7271736d6564646166616e6c7778797279796c6775776a77656565646e666a7371686d726b74656f666177666267786674717a64777a6577616d65616e68757477786b6764636976756e786e646e6b627863686e6673726e6578777a6268646b72756862726578676671746d66616e707a767162636f73767979677768707561647968627475746c6e6971696a647678747677626b6e777a7161727864627a65706d72656c786577726f6e6f676975666c646e6f6b7062746c7a627975776b737a76676f736a616f7179626c6f6e6c63617a63656673676c767070767265706a7a6f716b6d6279616b737767736c687a71796a6f76656c686c6c756f797164676563626b716f6f7867776772666
var data = fmt.Sprintf("0x%s%s%s%s", method, loc, size, value)
var payload = fmt.Sprintf("{\"jsonrpc\": \"2.0\",\"id\": 1,\"method\": \"hmyv2_call\",\"params\": [{\"to\": \"0xB75DA069E82064e0c9895b11F571aD99FDFd231D\",\"data\": \"%s\"},\"latest\"]}", data)
var jsonStr = []byte(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
var avgTimeNS int64
fmt.Println("Using a 1MB payload for testing: ")
for i := 1; i <= 10; i++ {
start := time.Now()
resp, err := client.Do(req)
if err != nil {
panic(err)
}
end := time.Now()
timeTaken := end.UnixNano() - start.UnixNano()
avgTimeNS += timeTaken
fmt.Printf("%d attempt, time taken: %d\n", i, timeTaken)
ioutil.ReadAll(resp.Body)
resp.Body.Close()
}
fmt.Println("Average time taken(in Ns) over 10 iterations: ", avgTimeNS/10)
}
func main() {
Test10KB()
Test100KB()
Test1MB()
}