Maximální počet bodů | 4 bodů |
Způsob komunikace s aplikací | Parametry předané při spuštění |
Způsob testování aplikace | Na základě odesílaných emailů |
Vaším prvním úkolem je doplnit implementaci třídy EmailSender, která umožní odesílat emailové zprávy pomocí SMTP protokolu. Třída EmailSender by měla umožnovat následující:
-
Konstruktor EmailSender(String host, int port): Konstruktor otevře spojení se zadaným SMTP serverem na daném portu.
-
Metoda send(String from, String to, String subject, String text): Metoda odesílá emailovou zprávu z určeného emailu na zadaný email příjemce s daným předmětem a textem.
-
Metoda close(): Metoda odesílá příkaz QUIT na SMTP server a zavírá spojení.
package utb.fai;
import java.net.*;
import java.io.*;
public class EmailSender {
/*
* Constructor opens Socket to host/port. If the Socket throws an exception during opening,
* the exception is not handled in the constructor.
*/
public EmailSender(String host, int port) throws UnknownHostException, IOException {
}
/*
* Sends email from an email address to an email address with some subject and text.
* If the Socket throws an exception during sending, the exception is not handled by this method.
*/
public void send(String from, String to, String subject, String text) throws IOException {
}
/*
* Sends QUIT and closes the socket
*/
public void close() {
}
}
Druhým úkolem bude doplnění implementace ve třídě Main pro zpracování parametrů předaných aplikaci při spuštění. Při testování aplikace bude testovací nástroj tímto způsobem aplikaci předávat parametry a nasledně hodnotit chování vaší aplikace.
- args[0] - Adresa SMTP serveru (String)
- args[1] - Číslo portu SMTP serveru (int)
- args[2] - Email odesílatele (String)
- args[3] - Email příjemce (String)
- args[4] - Předmět emailu (String)
- args[5] - Obsah emailu (String)
package utb.fai;
public class App {
public static void main(String[] args) {
// TODO: Implement input parameter processing
try {
EmailSender sender = new EmailSender("smtp.utb.cz", 25);
sender.send("[email protected]", "[email protected]", "Email from Java", "Funguje to?\nSnad...");
sender.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Poznámka: Implementace a struktura kódu aplikace je libovolná a je zcela na vás, jak tento problém vyřešíte. Je však důležité, aby aplikace splňovala zadané požadavky.
Vaše implementace bude hodnocena na základě chování aplikace při testování různých scénářů. Automatizovaný testovací nástroj bude předávat vaší aplikaci různé parametry, včetně platných a neplatných, aby otestoval její chování za různých podmínek. V případě testování síťové komunikace mezi více klienty, testovací nástroj bude vytvářet virtuální klienty/servery za účelem ověření funkcionality.
Výsledné hodnocení bude záviset na celkovém počtu úspěšných testovacích případů. Počet bodů získaných z úlohy bude tedy záviset na celkové úspěšnosti při testování. Váš výsledný počet bodů bude určen následujícím vzorcem.
VP = MB * (UT / CPT)
- VP: Výsledný počet bodů.
- MB: Maximální počet bodů pro danou úlohu.
- UT: Počet úspěšných testovacích případů.
- CPT: Celkový počet testovacích případů.
Automatizované hodnocení můžete spustit lokálně za účelem ověření funkčnosti vaší aplikace. K tomu slouží předpřipravený skript, který je dostupný v repozitáři tohoto úkolu. Výsledný report testování se bude nacházet v souboru test_report.html
.
Spusťte skript s názvem run_local_test.sh
.
Spusťte skript s názvem run_local_test.bat
.