Coder Social home page Coder Social logo

rescuerangera / netris-test-assignment Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 217 KB

Тестовое задание на позицию Разработчик Java в компанию Netris.

Java 100.00%
assignment java spring-boot test-assignment webclient-springboot

netris-test-assignment's Introduction

Тестовое задание на позицию Разработчик Java в компанию Netris.


Содержание

Как запустить

  • build
./gradlew build
  • run
./gradlew bootRun
  • tests
./gradlew test

Задача:

Оригинал задания в формате .pdf (task.pdf)

Необходимо написать код для получения и агрегации данных из нескольких сервисов.

Получение списка доступных видеокамер: https://run.mocky.io/v3/bc34ce01-90c6-4266-93f1-07591afad12e

Ответ состоит из массива объектов, содержащих поля:

  • id - число, идентификатор камеры
  • sourceDataUrl - строка, ссылка для получения данных источника.
  • tokenDataUrl - строка, ссылка для получения токенов безопасности по камере.

Формат данных в ответе на запрос на URL из поля sourceDataUrl:

  • urlType - строка, тип ссылки на видеопоток. Возможные значения: "LIVE", "ARCHIVE"
  • videoUrl - строка, ссылка на видеопоток

Формат данных в ответе на запрос на URL из поля tokenDataUrl:

  • value - строка, токен безопасности
  • ttl - число, время жизни токена

Необходимо сагрегировать данные по каждой камере. Ожидаемый результат:

[
  {
    "id": 1,
    "urlType": "LIVE",
    "videoUrl": "rtsp://127.0.0.1/1",
    "value": "fa4b588e-249b-11e9-ab14-d663bd873d93",
    "ttl": 120
  },
  {
    "id": 3,
    "urlType": "ARCHIVE",
    "videoUrl": "rtsp://127.0.0.1/3",
    "value": "fa4b5d52-249b-11e9-ab14-d663bd873d93",
    "ttl": 120
  },
  {
    "id": 20,
    "urlType": "LIVE",
    "videoUrl": "rtsp://127.0.0.1/20",
    "value": "fa4b5f64-249b-11e9-ab14-d663bd873d93",
    "ttl": 180
  },
  {
    "id": 2,
    "urlType": "ARCHIVE",
    "videoUrl": "rtsp://127.0.0.1/2",
    "value": "fa4b5b22-249b-11e9-ab14-d663bd873d93",
    "ttl": 60
  }
]

Решение должно быть представлено в виде веб-сервиса. Результат нужно вернуть в ответе на HTTP-запрос к этому сервису.

При написании кода надо учитывать потенциально большие объемы данных, то есть сбор и агрегация должны выполняться в несколько потоков и как можно меньше блокироваться (на операциях I/O или ожидании данных другого запроса)

Решение должно быть опубликовано на гитхабе и подкреплено юнит-тестами.

Дополнения

Примеры ответа за запросы

[
    {
        "id": 1,
        "sourceDataUrl": "https://run.mocky.io/v3/e417b132-12ff-434d-a2c2-f81e6ddc1c6c",
        "tokenDataUrl": "https://run.mocky.io/v3/fc0b6f75-b911-4b0a-9a1d-dc2379a6ef1c"
    },
    {
        "id": 3,
        "sourceDataUrl": "https://run.mocky.io/v3/64ab5cc8-1f47-4ac5-a621-90d4410f7db7",
        "tokenDataUrl": "https://run.mocky.io/v3/1ea436bd-1d3f-423c-9373-19e7d825dcd7"
    },
    {
        "id": 20,
        "sourceDataUrl": "https://run.mocky.io/v3/e8eee697-3018-4b2b-8b05-d00ab6b545c2",
        "tokenDataUrl": "https://run.mocky.io/v3/e2d29bba-4315-453b-b270-e668b2a67af1"
    },
    {
        "id": 2,
        "sourceDataUrl": "https://run.mocky.io/v3/86da6879-1444-4c92-818c-77b55d9c7864",
        "tokenDataUrl": "https://run.mocky.io/v3/8b3babb6-c354-4874-a878-68d883c8425d"
    }
]
{
    "urlType": "LIVE",
    "videoUrl": "rtsp://127.0.0.1/1"
}
{
    "value": "fa4b588e-249b-11e9-ab14-d663bd873d93",
    "ttl": 120
}

Расширенное логирование исходящих запросов

Для наглядной демонстрации порядка выполнения исходящих запросов раскомментируйте соответствующую строку в application.properties.

netris-test-assignment's People

Contributors

rescuerangera avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.