среда, 1 августа 2012 г.

module java junior labs

    TDD
    tdd.junit.navigableKeySet
    Написать детальные тесты на метод TreeMap<K,V>#navigableKeySet().
    Примеры на что стоит обратить внимание:
    1. Возвращаемое множество ключей соответствует данным, которые были в TreeMap<K,V>.
    2. Возвращаемое множество ключей является корректно сортированным как для ключей реализующих интерфейс Comparable<? super K>, так и для случая передачи comparator в конструкторе TreeMap (new TreeMap<K,V>(Comparator<? super K>)).
    3. У возвращаемое множества ключей (NavigableSet<K>) корректно работают методы iterator(), descendingIterator().
    4. У возвращаемое множества ключей (NavigableSet<K>) корректно работают методы subSet(), headSet(), tailSet().
    5. У возвращаемое множества ключей (NavigableSet<K>) корректно работают методы first(), last().
    6. У возвращаемое множества ключей (NavigableSet<K>) корректно работает метод descendingSet().
    7. ...
    Хотим обратить Ваше внимание на то, что полное покрытие тестами поведения всего одного метода может состоять из проверок СОТЕН ситуаций в виду сложного поведения этого метода и сложного поведения возвращаемого этим методом результата. Ограничьтесь некоторым разумным числом проверок (10-20). Разумный выбор типа и количества проверок входит в число навыков, необходимых специалисту по TDD.
    Результат этой лабораторной должен иметь вид одного или нескольких файлов/TestCase-ов (не проекта с библиотеками!):
    - TreeMap_navigableKeySet_iterator_Test {...}
    - TreeMap_navigableKeySet_subSet_Test {...}
    - TreeMap_navigableKeySet_first_Test {...}
    ...
высланных в исходниках по указанному адресу. 
    Имя лабораторной (tdd.junit.navigableKeySet) должно быть темой письма.
    Файлы надо не attach к письму, а послать sources как тело письма (так проще проверяющему добавлять комментарии).   
    Предполагается, что Ваш проект может импортировать классы из библиотек junit-4.11.jar и hamcrest-all-1.3.jar.



    LOGGING
    logging.log4j.mdc
    Разберитесь с тем что такое Mapped Diagnostic Context (MDC), как он настраивается, как используется и для чего служит.
    Напишите servlet filter, который помещает в MDC максимум информации о клиенте, пославшем запрос (как минимум IP-адрес, с которого поступил запрос, HTTP method(GET, POST, ...), строку запроса, ID сессии пользователя (если заведена), протокол, по которому поступил запрос (HTTP, HTTPS, ...)). 
    Разберитесь, из каких источников (каких классов Servlet API) можно эту информацию получить "находясь в фильтре".
    Разберитесь, как эту информацию получить в PatternLayout.    
    Хотим обратить Ваше внимание на то, что способность находить адекватные источники информации в литературе/интернете входит в число навыков, необходимых специалисту по Java.
    Результат этой лабораторной должен иметь вид нескольких файлов:
    - В теле письма исходный код MDCFilter
    - В теле письма строка параметров для PatternLayout, использующего данные из MDC
    - в attach к письму mdc.war - работающий WEB-проект с одной страницей index.jsp и одним фильтром MDCFilter, с настроенным log4j (который логирует сообщения в консоль). В тело index.jsp внедрен код scriplet, который пишет в log4j информацию о том, что страница генерируется. 
    - в attach к письму mdc-src.zip - исходный код проекта, без библиотек, без файлов специфичных для IDE. Библиотеки должны подключаться при помощи Maven.
    Имя лабораторной (logging.log4j.mdc) должно быть темой письма.