Не могу понять почему не проходит пункт 2.Вызов метода execute с параметром "get ip for date = "[any_date]"" должен возвращать множество уникальных IP адресов, события с которых произведены в указанное время [any_date]. при том, что остальные проходят, в том числе нахождение других параметров по дате. Метод, которые это все делает - общий. Поэтому совсем не понятно куда копать? Возможно дату нужно по-другому парсить? Но ведь до этого этапа все тесты проходило.
@Override
    public Set<Object> execute(String query) {
        String[] params = queryParser(query);
        return getQuery(params[0], params[1], params[2]);
    }

    private String[] queryParser(String s) {
        String[] result = new String[3];
        String str = s.substring(s.indexOf(' ') + 1);
        if (s.indexOf("for") > 0) {
            result[0] = str.substring(0, str.indexOf(' '));
            str = s.substring(s.indexOf("for") + 4);
            result[1] = str.substring(0, str.indexOf(' '));
            str = s.substring(s.indexOf(" = ") + 4);
            result[2] = str.substring(0, str.indexOf('"'));
        } else {
            result[0] = str;
        }
        return result;
    }

    private Set<Object> getQuery(String field1, String field2, String value1) {
        Set<Object> results = new HashSet<>();
        try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(logDir, "*.log")) {
            for (Path path : directoryStream) {
                BufferedReader fileReader = new BufferedReader(new FileReader(path.toString()));
                while (fileReader.ready()) {
                    String str = fileReader.readLine();
                    Map<String, String> data = getDataFromString(str);
                    String ipFromData = data.get("ip");
                    String userFromData = data.get("user");
                    Date date = parseDate(data.get("date"));
                    String eventFromData = data.get("event");
                    String statusFromData = data.get("status");
                    //String taskFromData = data.get("task");
                    if (    field2 == null && value1 == null
                         || field2.equals("ip") && value1.equals(ipFromData)
                         || field2.equals("user") && value1.equals(userFromData)
                         || field2.equals("date") && parseDate(value1).equals(date)
                         || field2.equals("event") && value1.equals(eventFromData)
                         || field2.equals("status") && value1.equals(statusFromData)
                        ) {
                        switch (field1) {
                            case "ip" :
                                results.add(ipFromData);
                                break;
                            case "user" :
                                results.add(userFromData);
                                break;
                            case "date" :
                                results.add(date);
                                break;
                            case "event" :
                                results.add(Event.valueOf(eventFromData));
                                break;
                            case "status" :
                                results.add(Status.valueOf(statusFromData));
                                break;
                        }

                    }
                }
                fileReader.close();
                path.getFileName();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return results;
    }

private Map<String, String> getDataFromString(String s) {
        Map<String, String> result = new HashMap<>();
        String ip = s.substring(0, s.indexOf('\t'));
        result.put("ip", ip);
        String str = s.substring(s.indexOf('\t')+1);
        String user = str.substring(0, str.indexOf('\t'));
        result.put("user", user);
        str = str.substring(str.indexOf('\t')+1);
        String date = str.substring(0, str.indexOf('\t'));
        result.put("date", date);
        str = str.substring(str.indexOf('\t')+1);
        String event = str.substring(0, str.indexOf('\t'));
        if (event.indexOf(' ') > 0) {
            String taskNumber = event.substring(event.indexOf(' ')+1);
            event = event.substring(0, event.indexOf(' '));
            result.put("task", taskNumber);
        }
        result.put("event", event);
        str = str.substring(str.indexOf('\t')+1);
        String status = str;
        result.put("status", status);
        return result;
    }

    private Date parseDate(String s) {
        String string = s;
        int date = Integer.parseInt(string.substring(0, string.indexOf('.')));
        string = string.substring(string.indexOf('.')+1);
        int month = Integer.parseInt(string.substring(0, string.indexOf('.'))) - 1;
        string = string.substring(string.indexOf('.')+1);
        int year = Integer.parseInt(string.substring(0, string.indexOf(' ')));
        string = string.substring(string.indexOf(' ')+1);
        int hrs = Integer.parseInt(string.substring(0, string.indexOf(':')));
        string = string.substring(string.indexOf(':')+1);
        int min = Integer.parseInt(string.substring(0, string.indexOf(':')));
        string = string.substring(string.indexOf(':')+1);
        int sec = Integer.parseInt(string);
        return (new GregorianCalendar(year, month, date, hrs, min, sec)).getTime();
    }