Continuous integration#02: Atrybuty smoczego pogromcy

C

Drugi post nt. Continuous Integration. Zapraszam do lektury.

  1. „Warsztat smokogromcy”
  2. „Atrybuty smoczego pogromcy”


Ten, kto tańczy ze smokami, musi się liczyć z tym, że spłonie.

 George R.R. Martin – Rycerz Siedmiu Królestw

 

 

 

Przeciwnik

Czy na pewno? Czy nie ma sposobu na walkę ze smokiem?

Tym razem będzie lekko. Opiszę pokrótce projekty-smoki które będą bazą do testów. Są dwa:

  • WebApi napisane w C#.NET Core z testami jednostkowymi
  • WebApi napisane w pythonie, bez testów jednostkowych (dopiero się uczę pythona), które ze względu na swoją różną od .NETowej naturę, będzie dobrym porównaniem

 

Jedyne, co te dwa projekciki robią, to udostępniają API RESTowe, za pomocą którego można pobrać listę książek z lokalnej bazy danych MySQL. Nie chodzi o to aby projekt-smok był mega wielki i ociężały. Potrzebne mi były małe, lekkie źródełka do testów narzędzi, opisanych w poprzednim poście.

 

 

Większy smok…

https://github.com/programistadoswiadczony/dotNetWebApi

 Technology stack:

  • .NET Core 2.0
  • EntityFramework Core
  • Moq
  • baza danych MySQL

Jak już wspomniałem, proste WebApi. Wystarczy odpalić GET’a na adres http://<host>/api/book/{bookName} i dostaniemy żądaną książkę lub jej brak.

Źródła są na GitHUB’ie, w razie gdybyście chcieli podpatrzeć co to jest. Baza danych nie jest dostępna na zewnątrz, zatem WebApi odpalone poza moją siecią nie zadziała, co nie stanowi problemu, bo nie jest tematem cyklu…

Solucja składa się z trzech projektów:

  • Model – który odpowiedzialny jest za połączenie z bazą i pobieranie danych
  • WebApi – które wiadomo, udostępnia metody po http i korzysta z Modelu
  • WebApi.Test – projekt z UnitTestami

 

 

Mniejszy smok…

https://github.com/programistadoswiadczony/PythonWebApi

Technology stack:

  • Python
  • Flask
  • MySQLdb
  • baza danych MySQL

 

To WebApi jest ciekawsze. Pisałem je (stwierdzenie trochę na wyrost, pisania wiele nie było) w technologii/języku którego nie znam, mianowicie w pythonie.

Ponadto potrzebny był jakiś framework. Pierwszy z brzegu – Flask. Twórcy tej biblioteki, na pierwszej stronie, piszą o swojej implementacji tak:

 

Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions. And before you ask: It’s BSD licensed!

 

Przyznam, że te dobre intencje mnie przekonały najbardziej, ale jeśli Ciebie, drogi Czytelniku to nie przekonuje, od biedy dostajemy jeszcze w pakiecie:

– development server
– obsługę unit testów
– obsługę routing’u na modłę RESTful serwisów

…i kilka innych ciekawych dodatków których pozwolę sobie nie wymieniać tutaj. Odsyłam Cię do strony twórców:

http://flask.pocoo.org/

 

To WebApi będzie hostowane na serwerze rodzaju nginx lub lighttpd. Jeszcze nie wiem.

Pod adresem http://<host>:<port> udostępnia całą listę książek.

 

W każdym bądź razie, z tym właśnie przyjdzie mi się mierzyć. Dopuszczam możliwośc zmiany tych projektów w trakcie testów automation build serwerów, jednak mam nadzieję, że do tego nie dojdzie. Idę wymyślić jakiś sensowny plan testów.

 

Daj znać w komentarzach, co sądzisz o tym temacie. Zostaw swój email, subskrybując newsletter, aby wiedzieć wcześniej, najwcześniej!

Czołem Drużyno!

 



About the author

Add comment

By Patryk

Autor serwisu

Patryk

Społecznościowe

Instagram

Newsletter



Historycznie

Tagi