[PW] Zadanie poprawkowe: Kryteria oceniania

wraz z objaśnieniami skrótów użytych w komentarzu do wyniku

Testy

T1: -1 pkt
Test podstawowy: serwer 2 4, klient 1 1 1, klient 1 2 2.

T2: -1 pkt
Czterej klienci zgłaszają się jednocześnie. Zasobów wystarczy dla jednej pary naraz.

T3: -1 pkt
Gdy jedna para klientów pracuje, zgłasza się kolejna para prosząc o zasoby innego rodzaju.

T4: -1 pkt
Gdy jedna para klientów pracuje, zgłasza się kolejna para prosząc o zasoby tego samego rodzaju. Zasobów wystarczy dla obu par.

T5: -1 pkt
Złośliwy przeplot, w którym para prosząca o więcej zasobów mogłaby zostać zagłodzona.

T6: -1 pkt
Wielu klientów zgłasza się naraz, prosząc o różną liczbę zasobów. Zasobów wystarczy dla kilku par jednocześnie.

T7: -1 pkt
Wiele par klientów zgłasza się do serwera. Kolejna para gdy poprzednia zakończyła pracę.

T8: -1 pkt
Dynamiczne tworzenie i kończenie wątków serwera, gdy zgłasza się różna liczba par klientów.

T9: -1 pkt
Wycieki pamięci. Sprawdzane przy pomocy valgrind.

T10: -1 pkt
Aktywne czekanie serwera na klientów. Sprawdzane przy pomocy strace.

T11: -1 pkt
Jednocześnie zgłasza się wiele par klientów, w których jeden pracuje krótko, a drugi długo. Zasobów wystarczy dla wszystkich.

T12: -1 pkt
Do serwera zgłasza się tylko jeden klient, po czym wysyłany jest sygnał SIGINT.

T13: -1 pkt
Gdy jedna para klientów pracuje, wysyłany jest sygnał SIGINT. Następnie, do serwera zgłasza się kolejna para.

T14: -1 pkt
Usuwanie łącz po zakończeniu pracy.

Oglądanie rozwiązania

O1: -0,5 pkt
Rozwiązanie nie rozpakowuje się do wymaganego katalogu.

O2: -0,5 pkt
Paczka nie jest w formacie tar.gz.

O3: -0,1 pkt
Paczka zawiera niepotrzebne pliki ("śmieci").
Kara nie była naliczana za zbędne pliki związane z biblioteką do raportów.

O4: -0,5 pkt
Problemy z kompilacją rozwiązania dotyczące biblioteki do raportów.
Rozwiązanie nie budowało się poprawnie z właściwą biblioteką do raportów, po wykonaniu poleceń, jakie podano w treści zadania.

O5: -0,5 pkt
Niepoprawna nazwa pliku (plików) wykonywalnego po zbudowaniu rozwiązania.

O6: -0,5 pkt
Pliki nagłówkowy zawiera implementacje funkcji.

O7: -0,5 pkt
Te same struktury są zdefiniowane dwukrotnie (zapewne kopiuj–wklej) zarówno w kodzie serwera, jak i klienta, zamiast raz w jednym pliku nagłówkowym.

O8: -0,5 pkt
Plik nagłówkowy nie zawiera #ifndef HEADER_H ... (lub innego, równoważnego rozwiązania), które zapobiegłoby ew. wielokrotnemu wstawieniu tego samego nagłówka w jednej jednostce kompilacji.

O9, O10, O11, O12: po -0,3 pkt
Implementacja nie sprawdza, czy wywołanie pthread_create() (O9), mkfifo() (O10) lub open() (O11) zakończyło się sukcesem (nie zwróciło błędu).
Sprawdzałem tworzenie wątków obsługujących klientów oraz tworzenie i otwieranie głównego łącza serwera.
Jeśli sukces/błąd któregoś, z wyżej wymienionych wywołań, jest sprawdzany, weryfikowałem, czy w przypadku błędu usuwane jest główne łącze serwera (O12).

O13: -0,5 pkt
Implementacja nie zamyka deskryptora głównego łącza serwera, gdy serwer kończy pracę.

O14: -1 pkt
Implementacja korzysta do synchronizacji lub komunikacji między wątkami lub procesami niedozwolonych w tym zadaniu mechanizmów (np. nazwanych semaforów).

O15: -0,5 pkt
Dane są przekazywane do nowego wątku (czwarty argument phtread_create()) w niewłaściwy sposób: np. mogą zostać zmienione zanim nowo powstały wątek je odczyta.

O16: -0,5 pkt Nazwa pliku będącego głównym łączem serwera nie jest parametrem/stałą, tylko jest wpisana w kodzie w każdym miejscu, gdzie jest potrzebna.

O17: -1 pkt
Inne.
Np., jeśli rozwiązanie jest oddawane wraz z repozytorium git (specjalnie lub przypadkiem), to proszę nie używać w nazwach commitów słów, które są w słownikach oznaczane jako wulg.
Autorzy takich rozwiązań zostali poinformowani o przyczynie indywidualnie.

Poprawki

P0: -1 pkt
Rozwiązanie wymagało poprawki autora, żeby zaliczyć test podstawowy.

P1: -0,5 pkt
Drobna poprawka pojedynczego problemu.

P2: -1 pkt
Większa poprawka pojedynczego problemu.