Livrare LOT 1 - Didi
This commit is contained in:
commit
5380c3fc63
990 changed files with 133308 additions and 0 deletions
|
|
@ -0,0 +1,43 @@
|
|||
import http from 'k6/http';
|
||||
import { check, sleep } from 'k6';
|
||||
import { Rate, Trend } from 'k6/metrics';
|
||||
|
||||
// Custom metrics
|
||||
const errorRate = new Rate('errors');
|
||||
const searchDuration = new Trend('search_duration');
|
||||
|
||||
// Simple baseline test - 1 user, 2 minutes
|
||||
export const options = {
|
||||
vus: 1, // 1 virtual user
|
||||
duration: '2m', // 2 minutes
|
||||
|
||||
thresholds: {
|
||||
http_req_duration: ['p(95)<3000'], // 95% under 3s
|
||||
errors: ['rate<0.05'], // Error rate < 5%
|
||||
},
|
||||
};
|
||||
|
||||
const queries = [
|
||||
'python tutorial',
|
||||
'machine learning',
|
||||
'linux commands',
|
||||
'docker compose',
|
||||
];
|
||||
|
||||
export default function () {
|
||||
const query = queries[Math.floor(Math.random() * queries.length)];
|
||||
const url = `http://localhost:8080/search?q=${encodeURIComponent(query)}&format=html`;
|
||||
|
||||
const res = http.get(url);
|
||||
|
||||
searchDuration.add(res.timings.duration);
|
||||
errorRate.add(res.status !== 200);
|
||||
|
||||
check(res, {
|
||||
'status is 200': (r) => r.status === 200,
|
||||
'response has results': (r) => r.body.includes('result'),
|
||||
'response time < 3s': (r) => r.timings.duration < 3000,
|
||||
});
|
||||
|
||||
sleep(2); // 2 seconds between requests
|
||||
}
|
||||
|
|
@ -0,0 +1,144 @@
|
|||
import http from 'k6/http';
|
||||
import { check, sleep } from 'k6';
|
||||
import { Rate, Trend } from 'k6/metrics';
|
||||
|
||||
// Custom metrics
|
||||
const errorRate = new Rate('errors');
|
||||
const searchDuration = new Trend('search_duration');
|
||||
|
||||
// Test configuration - 50 users, similar to previous test
|
||||
export const options = {
|
||||
stages: [
|
||||
{ duration: '2m', target: 10 }, // Ramp up to 10 users
|
||||
{ duration: '5m', target: 10 }, // Stay at 10 users
|
||||
{ duration: '2m', target: 50 }, // Ramp up to 50 users
|
||||
{ duration: '5m', target: 50 }, // Stay at 50 users
|
||||
{ duration: '2m', target: 0 }, // Ramp down
|
||||
],
|
||||
|
||||
thresholds: {
|
||||
http_req_duration: ['p(95)<10000'], // 95% under 10s (longer for complex queries)
|
||||
errors: ['rate<0.1'],
|
||||
},
|
||||
};
|
||||
|
||||
// =============================================================================
|
||||
// REAL FACT-CHECKING CLAIMS - All TRUE and VERIFIABLE
|
||||
// These simulate what users would search on a disinformation verification platform
|
||||
// =============================================================================
|
||||
|
||||
const factCheckClaims = [
|
||||
// --- US POLITICS ---
|
||||
"Joe Biden signed Infrastructure Investment and Jobs Act 2021",
|
||||
"Donald Trump impeached twice by House of Representatives",
|
||||
"Barack Obama born in Hawaii August 4 1961",
|
||||
"January 6 2021 Capitol building attack Washington DC",
|
||||
"Supreme Court overturned Roe v Wade June 2022",
|
||||
"Biden student loan forgiveness plan blocked by Supreme Court",
|
||||
"Trump classified documents Mar-a-Lago FBI search 2022",
|
||||
"Ketanji Brown Jackson first Black woman Supreme Court",
|
||||
|
||||
// --- EUROPEAN POLITICS ---
|
||||
"Russia invaded Ukraine February 24 2022",
|
||||
"UK Brexit officially completed January 31 2020",
|
||||
"Emmanuel Macron reelected French president 2022",
|
||||
"Olaf Scholz became German Chancellor December 2021",
|
||||
"Boris Johnson resigned as UK Prime Minister July 2022",
|
||||
"Sweden Finland applied NATO membership 2022",
|
||||
"Italy Giorgia Meloni first female prime minister 2022",
|
||||
"European Union sanctions Russia Ukraine invasion",
|
||||
|
||||
// --- COVID-19 FACTS ---
|
||||
"COVID-19 pandemic declared by WHO March 11 2020",
|
||||
"Pfizer BioNTech vaccine FDA emergency authorization December 2020",
|
||||
"COVID-19 originated Wuhan China December 2019",
|
||||
"WHO declared COVID-19 emergency over May 2023",
|
||||
"mRNA vaccines developed Moderna Pfizer coronavirus",
|
||||
"COVID-19 global deaths exceeded 6 million 2022",
|
||||
|
||||
// --- CLIMATE & SCIENCE ---
|
||||
"Paris Agreement climate change signed 2015",
|
||||
"IPCC report 1.5 degrees celsius warming target",
|
||||
"NASA confirms 2023 hottest year on record",
|
||||
"Arctic sea ice minimum record low 2012",
|
||||
"UN climate summit COP28 Dubai 2023",
|
||||
"Greenhouse gas emissions carbon dioxide methane",
|
||||
|
||||
// --- ELECTIONS & DEMOCRACY ---
|
||||
"2020 US presidential election Biden 306 electoral votes",
|
||||
"Brazil Lula da Silva elected president October 2022",
|
||||
"India Narendra Modi BJP won 2024 general election",
|
||||
"Mexico Claudia Sheinbaum elected first female president 2024",
|
||||
"Argentina Javier Milei elected president November 2023",
|
||||
"Poland Donald Tusk returned as prime minister 2023",
|
||||
|
||||
// --- INTERNATIONAL EVENTS ---
|
||||
"Hamas attack Israel October 7 2023",
|
||||
"Nord Stream pipeline explosions September 2022",
|
||||
"Queen Elizabeth II died September 8 2022",
|
||||
"Evan Gershkovich Wall Street Journal detained Russia",
|
||||
"Wagner Group rebellion Prigozhin June 2023",
|
||||
"China spy balloon shot down US February 2023",
|
||||
|
||||
// --- ECONOMIC FACTS ---
|
||||
"US Federal Reserve raised interest rates 2022 2023",
|
||||
"Silicon Valley Bank collapsed March 2023",
|
||||
"US debt ceiling crisis June 2023",
|
||||
"Inflation rate US peaked 9.1 percent June 2022",
|
||||
"Twitter acquired by Elon Musk October 2022 renamed X",
|
||||
"OpenAI released ChatGPT November 2022",
|
||||
|
||||
// --- MISINFORMATION TOPICS (TRUE FACTS TO COUNTER) ---
|
||||
"vaccines do not cause autism scientific consensus",
|
||||
"earth is approximately 4.5 billion years old",
|
||||
"climate change caused by human activity scientific consensus",
|
||||
"2020 US election no widespread voter fraud evidence",
|
||||
"COVID-19 lab leak theory investigated WHO",
|
||||
"5G technology does not spread coronavirus",
|
||||
|
||||
// --- POLITICAL QUOTES (VERIFIABLE) ---
|
||||
"Putin called Ukraine invasion special military operation",
|
||||
"Trump said inject disinfectant COVID briefing April 2020",
|
||||
"Biden said democracy is on the ballot 2024",
|
||||
"Zelensky addressed US Congress December 2022",
|
||||
"Xi Jinping third term Chinese president 2023",
|
||||
|
||||
// --- LEGAL & INVESTIGATIONS ---
|
||||
"Trump indicted Manhattan DA March 2023",
|
||||
"Trump indicted classified documents June 2023",
|
||||
"Trump indicted January 6 investigation August 2023",
|
||||
"Hunter Biden convicted gun charges June 2024",
|
||||
"Alex Jones ordered pay Sandy Hook families damages",
|
||||
"Sam Bankman-Fried FTX fraud conviction 2023",
|
||||
|
||||
// --- TECHNOLOGY & AI ---
|
||||
"artificial intelligence ChatGPT GPT-4 release 2023",
|
||||
"European Union AI Act regulation passed 2024",
|
||||
"Google Bard AI chatbot released 2023",
|
||||
"Elon Musk founded xAI company 2023",
|
||||
"deepfake technology election misinformation concerns",
|
||||
"social media algorithms spread misinformation studies",
|
||||
];
|
||||
|
||||
export default function () {
|
||||
// Random claim from list
|
||||
const claim = factCheckClaims[Math.floor(Math.random() * factCheckClaims.length)];
|
||||
|
||||
// Make search request
|
||||
const url = `http://localhost:8080/search?q=${encodeURIComponent(claim)}&format=html`;
|
||||
const res = http.get(url);
|
||||
|
||||
// Record metrics
|
||||
searchDuration.add(res.timings.duration);
|
||||
errorRate.add(res.status !== 200);
|
||||
|
||||
// Validate response
|
||||
check(res, {
|
||||
'status is 200': (r) => r.status === 200,
|
||||
'response has results': (r) => r.body.includes('result'),
|
||||
'response time < 10s': (r) => r.timings.duration < 10000,
|
||||
});
|
||||
|
||||
// Think time (user reads results, 2-5 seconds)
|
||||
sleep(Math.random() * 3 + 2);
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
import http from 'k6/http';
|
||||
import { check, sleep } from 'k6';
|
||||
import { Rate, Trend } from 'k6/metrics';
|
||||
|
||||
// Custom metrics
|
||||
const errorRate = new Rate('errors');
|
||||
const searchDuration = new Trend('search_duration');
|
||||
|
||||
// Test configuration
|
||||
export const options = {
|
||||
// Test stages (ramp up, steady, ramp down)
|
||||
stages: [
|
||||
{ duration: '2m', target: 10 }, // Ramp up to 10 users
|
||||
{ duration: '5m', target: 10 }, // Stay at 10 users
|
||||
{ duration: '2m', target: 50 }, // Ramp up to 50 users
|
||||
{ duration: '5m', target: 50 }, // Stay at 50 users
|
||||
{ duration: '2m', target: 0 }, // Ramp down
|
||||
],
|
||||
|
||||
// Pass/fail thresholds
|
||||
thresholds: {
|
||||
http_req_duration: ['p(95)<5000'], // 95% under 5s
|
||||
errors: ['rate<0.1'], // Error rate < 10%
|
||||
},
|
||||
};
|
||||
|
||||
// Sample search queries (vary these!)
|
||||
const queries = [
|
||||
'python tutorial',
|
||||
'machine learning',
|
||||
'linux commands',
|
||||
'javascript async await',
|
||||
'docker compose',
|
||||
'rust programming',
|
||||
'kubernetes deployment',
|
||||
'postgresql optimization',
|
||||
];
|
||||
|
||||
export default function () {
|
||||
// Random query from list
|
||||
const query = queries[Math.floor(Math.random() * queries.length)];
|
||||
|
||||
// Make search request
|
||||
const url = `http://localhost:8080/search?q=${encodeURIComponent(query)}&format=html`;
|
||||
const res = http.get(url);
|
||||
|
||||
// Record custom metrics
|
||||
searchDuration.add(res.timings.duration);
|
||||
errorRate.add(res.status !== 200);
|
||||
|
||||
// Validate response
|
||||
check(res, {
|
||||
'status is 200': (r) => r.status === 200,
|
||||
'response has results': (r) => r.body.includes('result'),
|
||||
'response time < 5s': (r) => r.timings.duration < 5000,
|
||||
});
|
||||
|
||||
// Think time (simulates real user)
|
||||
sleep(Math.random() * 3 + 1); // 1-4 seconds between requests
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
import http from 'k6/http';
|
||||
import { check, sleep } from 'k6';
|
||||
import { Rate, Trend, Counter } from 'k6/metrics';
|
||||
|
||||
const errorRate = new Rate('errors');
|
||||
const searchDuration = new Trend('search_duration');
|
||||
const requestCount = new Counter('total_requests');
|
||||
|
||||
// =============================================================================
|
||||
// STRESS TEST - Push to 200 users, find breaking point
|
||||
// Duration: ~13 minutes
|
||||
// =============================================================================
|
||||
export const options = {
|
||||
stages: [
|
||||
{ duration: '1m', target: 50 }, // Warm up to 50 users
|
||||
{ duration: '2m', target: 50 }, // Hold - baseline
|
||||
{ duration: '1m', target: 100 }, // Double to 100 users
|
||||
{ duration: '2m', target: 100 }, // Hold - watch for degradation
|
||||
{ duration: '1m', target: 150 }, // Push to 150 users
|
||||
{ duration: '2m', target: 150 }, // Hold - likely slowing down
|
||||
{ duration: '1m', target: 200 }, // Push to 200 users
|
||||
{ duration: '2m', target: 200 }, // Hold - stress zone
|
||||
{ duration: '1m', target: 0 }, // Ramp down - watch recovery
|
||||
],
|
||||
|
||||
thresholds: {
|
||||
errors: ['rate<0.5'], // Allow up to 50% errors
|
||||
http_req_duration: ['p(50)<30000'], // Median under 30s (very lenient)
|
||||
},
|
||||
};
|
||||
|
||||
// Fact-checking claims for realistic testing
|
||||
const factCheckClaims = [
|
||||
"Joe Biden signed Infrastructure Investment and Jobs Act 2021",
|
||||
"Russia invaded Ukraine February 24 2022",
|
||||
"COVID-19 pandemic declared by WHO March 11 2020",
|
||||
"Supreme Court overturned Roe v Wade June 2022",
|
||||
"Twitter acquired by Elon Musk October 2022",
|
||||
"Hamas attack Israel October 7 2023",
|
||||
"Trump indicted classified documents June 2023",
|
||||
"ChatGPT released by OpenAI November 2022",
|
||||
"Queen Elizabeth II died September 8 2022",
|
||||
"2020 US election Biden 306 electoral votes",
|
||||
"Brexit UK left European Union January 2020",
|
||||
"Zelensky addressed US Congress December 2022",
|
||||
"Silicon Valley Bank collapsed March 2023",
|
||||
"Wagner Group rebellion Prigozhin June 2023",
|
||||
"OpenAI Sam Altman fired rehired November 2023",
|
||||
];
|
||||
|
||||
export default function () {
|
||||
const claim = factCheckClaims[Math.floor(Math.random() * factCheckClaims.length)];
|
||||
const url = `http://localhost:8080/search?q=${encodeURIComponent(claim)}&format=html`;
|
||||
|
||||
const res = http.get(url, { timeout: '60s' }); // Longer timeout for stress
|
||||
|
||||
searchDuration.add(res.timings.duration);
|
||||
errorRate.add(res.status !== 200);
|
||||
requestCount.add(1);
|
||||
|
||||
check(res, {
|
||||
'status is 200': (r) => r.status === 200,
|
||||
'response has results': (r) => r.body && r.body.includes('result'),
|
||||
'no timeout': (r) => r.timings.duration < 60000,
|
||||
});
|
||||
|
||||
// Minimal sleep = maximum pressure (0.5-1.5 seconds)
|
||||
sleep(Math.random() + 0.5);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue