getPrice is now properly parameter based. Added k6 tests.
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
node_modules
|
||||||
|
|||||||
@@ -8,4 +8,12 @@ curl -X GET -H "Content-Type: application/json" -d '{"instanceCount": 14,
|
|||||||
"prefix":"US ",
|
"prefix":"US ",
|
||||||
"url":"https://www.ebay.com/itm/125187190152?_trkparms=amclksrc%3DITM%26aid%3D777008%26algo%3DPERSONAL.TOPIC%26ao%3D1%26asc%3D20230823115209%26meid%3D547ade272f0245a3a38d3f775c940b40%26pid%3D101800%26rk%3D1%26rkt%3D1%26sd%3D394822890601%26itm%3D125187190152%26pmt%3D0%26noa%3D1%26pg%3D4375194%26algv%3DRecentlyViewedItemsV2SignedOut%26brand%3DMiller&_trksid=p4375194.c101800.m5481&_trkparms=parentrq%3Ad7d5ca4718a0ab4c13690428fffff6d6%7Cpageci%3A22c4128a-5d61-11ee-9d02-ee1c8ae0bfdf%7Ciid%3A1%7Cvlpname%3Avlp_homepage"}' 'localhost:8001/getPrice'
|
"url":"https://www.ebay.com/itm/125187190152?_trkparms=amclksrc%3DITM%26aid%3D777008%26algo%3DPERSONAL.TOPIC%26ao%3D1%26asc%3D20230823115209%26meid%3D547ade272f0245a3a38d3f775c940b40%26pid%3D101800%26rk%3D1%26rkt%3D1%26sd%3D394822890601%26itm%3D125187190152%26pmt%3D0%26noa%3D1%26pg%3D4375194%26algv%3DRecentlyViewedItemsV2SignedOut%26brand%3DMiller&_trksid=p4375194.c101800.m5481&_trkparms=parentrq%3Ad7d5ca4718a0ab4c13690428fffff6d6%7Cpageci%3A22c4128a-5d61-11ee-9d02-ee1c8ae0bfdf%7Ciid%3A1%7Cvlpname%3Avlp_homepage"}' 'localhost:8001/getPrice'
|
||||||
|
|
||||||
|
curl -X GET -H "Content-Type: application/json" -d '{"instanceCount": 39,
|
||||||
|
"idName": ".ux-textspans",
|
||||||
|
"prefix":"US ",
|
||||||
|
"url":"https://www.ebay.com/itm/254429385780?_trkparms=amclksrc%3DITM%26aid%3D777008%26algo%3DPERSONAL.TOPIC%26ao%3D1%26asc%3D20230823115209%26meid%3D547ade272f0245a3a38d3f775c940b40%26pid%3D101800%26rk%3D1%26rkt%3D1%26sd%3D394822890601%26itm%3D254429385780%26pmt%3D1%26noa%3D1%26pg%3D4375194%26algv%3DRecentlyViewedItemsV2SignedOut%26brand%3DApple&_trksid=p4375194.c101800.m5481&_trkparms=parentrq%3Ad7d5ca4718a0ab4c13690428fffff6d6%7Cpageci%3A22c4128a-5d61-11ee-9d02-ee1c8ae0bfdf%7Ciid%3A1%7Cvlpname%3Avlp_homepage"}' 'localhost:8001/getPrice'
|
||||||
|
|
||||||
|
curl -X GET -H "Content-Type: application/json" -d '{"instanceCount": 36,
|
||||||
|
"idName": ".ux-textspans",
|
||||||
|
"prefix":"US ",
|
||||||
|
"url":"https://www.ebay.com/itm/154843103473?_trkparms=amclksrc%3DITM%26aid%3D777008%26algo%3DPERSONAL.TOPIC%26ao%3D1%26asc%3D20230823115209%26meid%3D547ade272f0245a3a38d3f775c940b40%26pid%3D101800%26rk%3D1%26rkt%3D1%26sd%3D394822890601%26itm%3D154843103473%26pmt%3D1%26noa%3D1%26pg%3D4375194%26algv%3DRecentlyViewedItemsV2SignedOut%26brand%3DApple&_trksid=p4375194.c101800.m5481&_trkparms=parentrq%3Ad7d5ca4718a0ab4c13690428fffff6d6%7Cpageci%3A22c4128a-5d61-11ee-9d02-ee1c8ae0bfdf%7Ciid%3A1%7Cvlpname%3Avlp_homepage"}' 'localhost:8001/getPrice'
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { check, sleep } from "k6"
|
|||||||
import exec from "k6/execution"
|
import exec from "k6/execution"
|
||||||
import { SharedArray } from "k6/data"
|
import { SharedArray } from "k6/data"
|
||||||
import http from "k6/http"
|
import http from "k6/http"
|
||||||
|
import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js';
|
||||||
|
|
||||||
export const options = {
|
export const options = {
|
||||||
scenarios:{},
|
scenarios:{},
|
||||||
@@ -12,13 +12,42 @@ export const options = {
|
|||||||
|
|
||||||
let scenarios = {
|
let scenarios = {
|
||||||
base:{
|
base:{
|
||||||
executor "per-vu-iterations",
|
executor: "per-vu-iterations",
|
||||||
vus: 1,
|
vus: 1,
|
||||||
iterations: 1,
|
iterations: 1,
|
||||||
maxDuration: "5m"
|
maxDuration: "5m"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const baseURL = "http://localhost:8001";
|
||||||
|
let scrapeData = [
|
||||||
|
{
|
||||||
|
url: "https://www.ebay.com/itm/154843103473?_trkparms=amclksrc%3DITM%26aid%3D777008%26algo%3DPERSONAL.TOPIC%26ao%3D1%26asc%3D20230823115209%26meid%3D547ade272f0245a3a38d3f775c940b40%26pid%3D101800%26rk%3D1%26rkt%3D1%26sd%3D394822890601%26itm%3D154843103473%26pmt%3D1%26noa%3D1%26pg%3D4375194%26algv%3DRecentlyViewedItemsV2SignedOut%26brand%3DApple&_trksid=p4375194.c101800.m5481&_trkparms=parentrq%3Ad7d5ca4718a0ab4c13690428fffff6d6%7Cpageci%3A22c4128a-5d61-11ee-9d02-ee1c8ae0bfdf%7Ciid%3A1%7Cvlpname%3Avlp_homepage",
|
||||||
|
prefix:"US ",
|
||||||
|
idName: ".ux-textspans",
|
||||||
|
instanceCount: 36,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: "https://www.ebay.com/itm/254429385780?_trkparms=amclksrc%3DITM%26aid%3D777008%26algo%3DPERSONAL.TOPIC%26ao%3D1%26asc%3D20230823115209%26meid%3D547ade272f0245a3a38d3f775c940b40%26pid%3D101800%26rk%3D1%26rkt%3D1%26sd%3D394822890601%26itm%3D254429385780%26pmt%3D1%26noa%3D1%26pg%3D4375194%26algv%3DRecentlyViewedItemsV2SignedOut%26brand%3DApple&_trksid=p4375194.c101800.m5481&_trkparms=parentrq%3Ad7d5ca4718a0ab4c13690428fffff6d6%7Cpageci%3A22c4128a-5d61-11ee-9d02-ee1c8ae0bfdf%7Ciid%3A1%7Cvlpname%3Avlp_homepage",
|
||||||
|
prefix: "US ",
|
||||||
|
idName: ".ux-textspans",
|
||||||
|
instanceCount: 39
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url:"https://www.ebay.com/itm/125187190152?_trkparms=amclksrc%3DITM%26aid%3D777008%26algo%3DPERSONAL.TOPIC%26ao%3D1%26asc%3D20230823115%20%20%20%20209%26meid%3D547ade272f0245a3a38d3f775c940b40%26pid%3D101800%26rk%3D1%26rkt%3D1%26sd%3D394822890601%26itm%3D125187190152%26pmt%3D0%26noa%%20%20%20%203D1%26pg%3D4375194%26algv%3DRecentlyViewedItemsV2SignedOut%26brand%3DMiller&_trksid=p4375194.c101800.m5481&_trkparms=parentrq%3Ad7d5ca471%20%20%20%208a0ab4c13690428fffff6d6%7Cpageci%3A22c4128a-5d61-11ee-9d02-ee1c8ae0bfdf%7Ciid%3A1%7Cvlpname%3Avlp_homepage",
|
||||||
|
prefix: "US ",
|
||||||
|
idName: ".ux-textspans",
|
||||||
|
instanceCount: 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: "https://www.ebay.com/itm/355014752155?_trkparms=amclksrc%3DITM%26aid%3D1110006%26algo%3DHOMESPLICE.SIM%26ao%3D1%26asc%3D20201210111314%26meid%3Db9d7bfc448e846fd88d6af6196122543%26pid%3D101195%26rk%3D5%26rkt%3D12%26sd%3D125187190152%26itm%3D355014752155%26pmt%3D1%26noa%3D0%26pg%3D4429486%26algv%3DSimplAMLv11WebTrimmedV3MskuWithLambda85KnnRecallV1V2V4ItemNrtInQueryAndCassiniVisualRankerAndBertRecallWithVMEV3CPCAuto%26brand%3DMiller&_trksid=p4429486.c101195.m1851&amdata=cksum%3A355014752155b9d7bfc448e846fd88d6af6196122543%7Cenc%3AAQAIAAABUObhgc4Nk8%252BdtAwOww4FKLaj%252FQ5qqgDlQCuqZA43WcPFUWDERCUugbbOk7XQv0JXlBfqCg2xKF3WcPghxGMFw2oSlXvfExEaMYr7I7LmrHcP6czY1wIMt0ORyKiCWt95xldincyyBx3g%252BNDW%252B%252FhWUgTaBhK6xAm%252BJIbCOMehu%252Bdw7Cl7%252B5IYh7smXk3oe11K772Gk2jRH3EKtZgP6B%252FlgnbOdlzXvdfx9nm%252BOFv14nym91rSP%252Fp0wbIOb9ayjgcJ%252BFrPBZFmP28lX44UnMF2tb1luPAriUk40GUO3lqhKbBiRBHaRdiQQMcQYqGH0PMIMw9ARpndx%252BhzDgl11zXK577uYvKJmCTZG%252BJsYG0kBH8jTJWhtdTz3Z7HEvndOTAx0XNofblr0%252FSfGh1VnTJs5jXxD1%252Fn86pkxTf7HyqpXKsaDdR64EbDneXYdEMMx2UixQ%253D%253D%7Campid%3APL_CLK%7Cclp%3A4429486&epid=722188521",
|
||||||
|
prefix: "US ",
|
||||||
|
idName: ".ux-textspans",
|
||||||
|
instanceCount: 14
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
let ENV = {};
|
let ENV = {};
|
||||||
if(__ENV.scenario){
|
if(__ENV.scenario){
|
||||||
options.scenarios[__ENV.scenario] = scenarios[__ENV.scenario];
|
options.scenarios[__ENV.scenario] = scenarios[__ENV.scenario];
|
||||||
@@ -29,11 +58,24 @@ if(__ENV.scenario){
|
|||||||
|
|
||||||
export function setup(){
|
export function setup(){
|
||||||
let baseData = {};
|
let baseData = {};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function(baseData){
|
export default function(baseData){
|
||||||
|
scrapeData.forEach((query) => {
|
||||||
|
let body = {
|
||||||
|
"instanceCount": query.instanceCount,
|
||||||
|
"prefix": query.prefix,
|
||||||
|
"idName": query.idName
|
||||||
|
}
|
||||||
|
const url = new URL(`${baseURL}/getPrice`);
|
||||||
|
url.searchParams.append("instanceCount", query.instanceCount);
|
||||||
|
url.searchParams.append("prefix", query.prefix);
|
||||||
|
url.searchParams.append("idName", query.idName);
|
||||||
|
url.searchParams.append("url", query.url);
|
||||||
|
|
||||||
|
const res = http.get(url.toString());
|
||||||
|
console.log(res.body);
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
20
server.js
20
server.js
@@ -33,23 +33,31 @@ app.get('/', function (req, res) {
|
|||||||
|
|
||||||
app.get("/getPrice", async function(req, res){
|
app.get("/getPrice", async function(req, res){
|
||||||
try{
|
try{
|
||||||
|
console.log(`Getting Price!`);
|
||||||
//console.log(`Request Body: \n ${JSON.stringify(req.body["instanceCount"])}`);
|
//console.log(`Request Body: \n ${JSON.stringify(req.body["instanceCount"])}`);
|
||||||
let url = req.body["url"];
|
let url = req.query["url"];
|
||||||
let prefix = req.body["prefix"];
|
let prefix = req.query["prefix"];
|
||||||
let instanceCount = parseInt(req.body["instanceCount"]);
|
let instanceCount = parseInt(req.query["instanceCount"]);
|
||||||
let idName = req.body["idName"];
|
let idName = req.query["idName"];
|
||||||
let finalAnswer = "";
|
let finalAnswer = "";
|
||||||
|
|
||||||
|
console.log(`Get Price Info:\n
|
||||||
|
Prefix: ${prefix}\n
|
||||||
|
InstanceCount: ${instanceCount}\n
|
||||||
|
idName: ${idName}\n
|
||||||
|
URL: ${url}\n
|
||||||
|
`);
|
||||||
|
|
||||||
request(url, (err, resp, html) => {
|
request(url, (err, resp, html) => {
|
||||||
const $ = cheerio.load(html);
|
const $ = cheerio.load(html);
|
||||||
finalAnswer = "9";
|
finalAnswer = "";
|
||||||
$(idName).each((i, el) => {
|
$(idName).each((i, el) => {
|
||||||
if(i == instanceCount){
|
if(i == instanceCount){
|
||||||
const item = $(el).text();
|
const item = $(el).text();
|
||||||
finalAnswer = item.split(prefix).reverse()[0];
|
finalAnswer = item.split(prefix).reverse()[0];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
console.log(finalAnswer);
|
console.log(`Answer: ${finalAnswer}`);
|
||||||
res.send(`Answer: ${finalAnswer}`);
|
res.send(`Answer: ${finalAnswer}`);
|
||||||
res.end();
|
res.end();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user