مثالی ٹیسٹ کیس
دیکھیں ہم ریلیشن فلٹرز کے ساتھ ایک پیچیدہ نیسٹڈ کوئری کی توثیق کیسے کرتے ہیں
tests/e2e/postgres.test.ts
it('nested relation filter', () =>
runParityTest(
db,
benchmarkResults,
'findMany nested relation',
'Organization',
{
method: 'findMany',
where: {
projects: {
some: {
tasks: { some: { status: 'DONE' } }
}
}
}
},
() => db.prisma.organization.findMany({
where: {
projects: {
some: {
tasks: { some: { status: 'DONE' } }
}
}
},
orderBy: { id: 'asc' }
}),
)
)
// runParityTest اندرونی طور پر:
// 1. آرگیومنٹس کے ساتھ generateSQL() کال کرتا ہے
// 2. تیار کردہ SQL براہِ راست چلاتا ہے
// 3. Prisma کوئری چلاتا ہے
// 4. دونوں نتائج نارملائز کرتا ہے
// 5. گہری مساوات کی جانچ - کوئی بھی فرق ہو تو فیل
// 6. ایگزیکیوشن ٹائم کا بینچ مارک کرتا ہے
ٹیسٹ ایگزیکیوشن کے دوران کیا ہوتا ہے
1کوئری کی تیاری (مائیکرو سیکنڈز)
generateSQL() فنکشن Prisma آرگیومنٹس پارس کر کے پیرامیٹرائزڈ SQL بناتا ہے۔ کوئری کی تیاری کا اوور ہیڈ ناپنے کے لیے اس مرحلے کا الگ بینچ مارک کیا جاتا ہے۔
2متوازی ایگزیکیوشن (ملی سیکنڈز)
دونوں کوئریز Promise.all() کے ذریعے بیک وقت ڈیٹابیس کی ایک ہی حالت پر چلتی ہیں، جس سے منصفانہ موازنہ اور یکساں ڈیٹا حالات یقینی ہوتے ہیں۔
3گہری نارملائزیشن
نتائج کی ریکرسیو نارملائزیشن ہوتی ہے: BigInt→Number، Decimal→Float(10)، Date→null، JSON پارس، کیز کی ترتیب۔ اس سے بائٹ بہ بائٹ موازنے کی درستگی یقینی ہوتی ہے۔
4سخت مساوات
صفر رواداری کے ساتھ JSON stringify موازنہ۔ قطاروں کی تعداد، فیلڈ ویلیوز، نیسٹڈ آبجیکٹس یا ترتیب میں کوئی بھی فرق تفصیلی diff آؤٹ پٹ کے ساتھ ٹیسٹ فیل کر دیتا ہے۔
5کارکردگی کی پیمائش
توثیق کے بعد 5-50 ایٹریشنز اوسط ایگزیکیوشن ٹائم ناپتی ہیں۔ نتائج میں شامل ہیں: Prisma v6، Prisma v7، Prisma v8، Drizzle ORM، تیار کردہ SQL، اور SQL تیار کرنے کا اوور ہیڈ۔
کئی ورژنز پر توثیق
ہر بینچ مارک شدہ ٹیسٹ، جہاں سپورٹ ہو، Prisma v6، v7 اور v8 پر چلتا ہے:
Prisma v6 (6.19.3)
- PrismaClient کا براہِ راست استعمال
- پرانا انجن آرکیٹیکچر
- بنیادی کارکردگی کے میٹرکس
Prisma v7 (7.10.0)
- اڈاپٹر پر مبنی آرکیٹیکچر
- @prisma/adapter-pg اور adapter-better-sqlite3
- نئے انجن کی آپٹیمائزیشنز
Prisma v8 (8.1.0-dev.1)
- Prisma v8 dev ریلیز کی کوریج
- اڈاپٹر پر مبنی آرکیٹیکچر
- PostgreSQL اور SQLite بینچ مارک پیریٹی