#!/usr/bin/env bash echo "Building executables..." cd "${FLAKE:-$(dirname $0)}" if command -v nix &>/dev/null; then producer="$(nix build --no-link --print-out-paths .#a3-producer)/bin/producer" consumer="$(nix build --no-link --print-out-paths .#a3-consumer)/bin/consumer" else mkdir build gcc src/producer.c -o build/producer -pthread -lrt gcc src/consumer.c -o build/consumer -pthread -lrt producer="./build/producer" consumer="./build/consumer" fi echo -e "\nTEST - Basic Functionality" "${producer}" 1 5 & "${consumer}" 1 5 & wait echo -e "\nTEST - Multiple Producers" "${producer}" 1 10 & "${producer}" 2 10 & "${producer}" 3 10 & "${consumer}" 1 30 & wait echo -e "\nTEST - Multiple Consumers" "${producer}" 1 20 & "${consumer}" 1 10 & "${consumer}" 2 10 & wait # Cleanup ipcrm -M 0x1234 rm /dev/shm/sem* rm -rf build