import org.apache.kafka.clients.producer.Producer;
import org.junit.jupiter.api.Test;
import java.util.stream.IntStream;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.junit.jupiter.api.Test;
import java.util.Properties;
import java.util.stream.IntStream;

public class LoadTest {

    @Test
    public void runHeavyLoadTest() {
        // 1. إعداد الـ Producer (استدعي دالة الإنشاء من كودك الأصلي)
        Producer<String, Transaction> producer = Application.createKafkaProducer("localhost:9092");

        int numberOfRecords = 100; // سنرسل 10 آلاف معاملة مثلاً
        long startTime = System.currentTimeMillis();

        System.out.println("Starting Load Test: sending " + numberOfRecords + " records...");

        // 2. إرسال البيانات بسرعة قصوى باستخدام Java Streams
        IntStream.range(0, numberOfRecords).parallel().forEach(i -> {
            Transaction t = new Transaction("user_" + i, (double) i, "Country_" + (i % 5));
            // نرسل إلى Topic المعاملات الصحيحة مثلاً
            producer.send(new ProducerRecord<>("valid-transactions", t.getUser(), t));
        });

        long endTime = System.currentTimeMillis();

        // 3. تحليل النتائج
        System.out.println("Load Test Completed!");
        System.out.println("Total Time: " + (endTime - startTime) + " ms");
        System.out.println("Throughput: " + (numberOfRecords / ((endTime - startTime) / 1000.0)) + " records/sec");

        producer.close();
    }
}