قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

ہیلو، حبر! یہ میرا ایک سیکوئل ہے۔ پچھلی اشاعت، جس میں میں JMeter کا استعمال کرتے ہوئے قطاروں میں پیغامات رکھنے کے اختیارات کے بارے میں بات کروں گا۔

ہم ایک بڑی وفاقی کمپنی کے لیے ڈیٹا بس بنا رہے ہیں۔ درخواست کے مختلف فارمیٹس، تبدیلیاں، پیچیدہ روٹنگ۔ جانچ کے لیے، آپ کو قطار میں بہت سارے پیغامات بھیجنے کی ضرورت ہے۔ دستی طور پر ایک درد ہے جو ہر chiropractor کو سنبھال نہیں سکتا۔

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

تعارف

اگرچہ مجھے پہلے اس درد کو برداشت کرنا پڑا۔ یہ سب RFHUtil کے ساتھ شروع ہوا۔ طاقتور، لیکن عجیب اور خوفناک: ٹھیک ہے، آپ روس کو جانتے ہیں۔

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

بعض صورتوں میں ناگزیر، لیکن فعال استعمال کی صورت میں مسلسل کم ہو رہا ہے۔
اس کے ساتھ آسان ٹیسٹنگ ناممکن ہے۔

JMeter کے ساتھ سب کچھ آسان ہو گیا ہے۔ مہارت حاصل کرنے اور اس کی عادت ڈالنے کے پہلے مرحلے کے بعد، امید خوش کن امتحان کے لیے طلوع ہونے لگی۔

میں فعال طور پر JMS پبلشر اور JMS سبسکرائبر کے نمونے استعمال کرتا ہوں۔ JMS پوائنٹ ٹو پوائنٹ کے برعکس، یہ جوڑا استعمال کرنے میں زیادہ آسان معلوم ہوتا ہے۔ مثال کے طور پر، JMS سلیکٹر میں سبسکرائبر کے ساتھ آپ ایک متغیر کی وضاحت کر سکتے ہیں، لیکن پوائنٹ ٹو پوائنٹ کے ساتھ آپ نہیں کر سکتے (یا یہ طریقہ زیادہ واضح نہیں ہے)۔

نمونے تیار کرنا

جے ایم ایس پبلیشر

  • سیٹ اپ - ہر ایک نمونہ۔ اپاچی تجویز کرتا ہے اس اختیار کو استعمال کریں اگر قطار/موضوعات متغیرات کے ذریعے بیان کیے گئے ہوں۔
  • میعاد ختم ہونے (ms) = 120000۔ ناکامی کی صورت میں، ٹیسٹ کی درخواستیں 2 منٹ کے بعد قطار سے غائب ہو جائیں گی۔
  • غیر مستقل ڈیلیوری موڈ استعمال کریں؟ --.سچ آئی بی ایم منظوریہ مستقل موڈ اچانک ناکامی کی صورت میں منتقل شدہ پیغامات کے قابل اعتماد تحفظ کو یقینی بناتا ہے۔ اور غیر مستقل موڈ میں تیزی سے تبادلہ۔ جانچ کے مقاصد کے لیے، رفتار زیادہ اہم ہے۔

ہر پبلشر میں میں ایک jms پراپرٹی سیٹ کرتا ہوں جسے سبسکرائبر JMS سلیکٹر میں استعمال کرے گا۔ ہر جمع کرانے کے لیے، صارف کے پیرامیٹرز ٹیسٹ پلان کے عنصر میں ایک بے ترتیب قدر تیار کی جاتی ہے:

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

اس طرح آپ یقین کر سکتے ہیں کہ صحیح پیغام پڑھا گیا ہے۔

پہلے سے تشکیل شدہ JMS پبلیشر کا حتمی "خالی":

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

JMS سبسکرائبر

  • سیٹ اپ - ہر ایک نمونہ۔ ٹھیک ہے، آپ سمجھتے ہیں.
  • ٹائم آؤٹ (ms) = 100000۔ اگر 100 سیکنڈ انتظار کے بعد بھی درخواست قطار میں نہیں آتی ہے، تو کچھ غلط ہو گیا ہے۔
  • نمونوں کے درمیان رکیں؟ --.سچ

JMS سلیکٹر - کافی آسان ایک ٹکڑا. حتمی JMS سبسکرائبر:

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

منتقل شدہ پیغامات میں سیریلک حروف تہجی سے کیسے نمٹا جائے۔ JMeter میں، پہلے سے طے شدہ طور پر، پروف ریڈنگ کے بعد، یہ ٹیڑھی شکل سے ظاہر ہوتا ہے۔ اس سے بچنے اور ہمیشہ اور ہر جگہ عظیم اور طاقتور سے لطف اندوز ہونے کے لیے، آپ کو یہ کرنے کی ضرورت ہے:

  1. JMeter "لانچر" میں JVM دلیل شامل کریں:
    -Dfile.encoding=UTF-8
  2. گرووی لائن کے ساتھ سبسکرائبر میں JSR223 پوسٹ پروسیسر شامل کریں:
    prev.setDataEncoding("UTF-8")

متن بھیجیں۔

سست ترین آپشن۔ تازہ تحریری ٹیسٹوں کو ڈیبگ کرنے کے لیے موزوں ہے۔ یا ایسے معاملات کے لیے جب آپ کو کم از کم کوئی چھوٹی چیز بھیجنے کی ضرورت ہو۔ آپشن منتخب کریں۔ پیغام کا ذریعہ - Textarea اور پیغام کے باڈی کو ٹیکسٹ بلاک میں رکھیں:

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

فائل کی منتقلی

سب سے عام آپشن۔ زیادہ تر منظرناموں کے لیے موزوں ہے۔ آپشن منتخب کریں۔ پیغام کا ذریعہ - فائل سے اور فیلڈ میں پیغام کے راستے کی نشاندہی کریں۔ فائل - فائل کا نام:

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

فائل کو ٹیکسٹ فیلڈ میں منتقل کرنا

سب سے زیادہ ورسٹائل آپشن۔ زیادہ تر منظرناموں کے لیے موزوں + کو JMS Point-to-Point میں استعمال کیا جا سکتا ہے جہاں دوسرا بھیجنے کا اختیار نہیں ہے:

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

بائٹ سرنی کو پاس کرنا

سب سے مشکل آپشن۔ بغیر تحریف، ایس ایم ایس اور ہنگامہ آرائی کے بائٹ تک درخواستوں کی ناقابل یقین حد تک درست ترسیل کو چیک کرنے کے لیے موزوں ہے۔ آپ ڈیفالٹ JMeter میں ایسا نہیں کر پائیں گے۔ یہاں مجھے اس بارے میں ضرور بتایا گیا تھا۔

تو مجھے ڈاؤن لوڈ کرنا پڑا ذرائع اور ترمیم کریں کوڈ JMS سبسکرائبر۔

طریقہ کار میں بدل دیا گیا۔ extractContent(..) لائن:

buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");

پر:

byte[] bytes = new byte[(int) bytesMessage.getBodyLength()];
bytesMessage.readBytes(bytes);
try {
	buffer.append(new String(bytes, "UTF-8"));
} catch (UnsupportedEncodingException e) {
	throw new RuntimeException(e);
}

اور JMeter کو دوبارہ بنایا۔

باقی جو کچھ JSR223 سیمپلرز کو شامل کرنا ہے۔ سب سے پہلے پبلیشر/سبسکرائبر کے جوڑے سے پہلے ایک DAT فائل بنانا ہے جس میں بے ترتیب بائٹس شامل ہیں:

import org.apache.commons.lang3.RandomUtils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

vars.put("PATH_TO_BYTES", "C:temprandomBytes.dat");
File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
byte[] arr = RandomUtils.nextBytes((int)(Math.random()*10000));
        try {
            FileOutputStream fos = new FileOutputStream(RESULT_FILE);
            fos.write(arr);
            fos.close();
        } catch (IOException e) {
            System.out.println("file not found");
        }

دوسرا - اسکرپٹ کے آخر میں، فائل کو حذف کرتا ہے:

import java.io.File;

File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
RESULT_FILE.delete();

اور پبلیشر میں فائل کا راستہ شامل کرنا نہ بھولیں:

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

اور سبسکرائبر کے لیے JSR223 Assertion میں بھی ایک چیک - ماخذ بائٹس کا موازنہ ان سے کریں جو وصول کنندہ کی قطار میں آتے ہیں:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;

Path path = Paths.get(vars.get("PATH_TO_BYTES"), new String[0]);
byte[] originalArray = Files.readAllBytes(path);
byte[] changedArray = ctx.getPreviousResult().getResponseData();
System.out.println(changedArray.length);

if (Arrays.equals(originalArray, changedArray))
	{
     	SampleResult.setResponseMessage("OK");

	} else {
	   SampleResult.setSuccessful(false);
     	   SampleResult.setResponseMessage("Comparison failed");
	   SampleResult.setResponseData("Bytes have changed","UTF-8");
     	   IsSuccess=false;
	}

حاصل يہ ہوا

میں نے قطاروں میں پیغامات بھیجنے کے چار طریقے بیان کیے، جنہیں میں ہر روز عملی طور پر استعمال کرتا ہوں۔ مجھے امید ہے کہ یہ معلومات آپ کی زندگی کو آسان بنا دے گی۔ تسلسل میں، میں ایک ایکسچینج کی جانچ کے اپنے تجربے کے بارے میں بات کرنے کا ارادہ رکھتا ہوں جہاں ایک سرے پر قطار اور دوسرے سرے پر ڈیٹا بیس یا فائل سسٹم ہو۔

اپنا وقت بچائیں۔ اور آپ کی توجہ کا شکریہ۔

قطاریں اور JMeter: پبلشر اور سبسکرائبر کے ساتھ اشتراک کرنا

ماخذ: www.habr.com

نیا تبصرہ شامل کریں