Latest Posts

Удалить все контейнеры и образы в Docker

Удалить все контейнеры и образы в Docker

Четыре команды для быстрого удаления всех образов и контейнеров на докер машине:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker system prune -a

 

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Assert raise Exception в python юнит тестах

Assert raise Exception в python юнит тестах

Продолжаем про юниты тесты в питоне.
Удобная конструкция для проверки на вызов исключения в тесте:

def test_something_with_exception(self):
    self.assertRaises(ValueError, self.client.send_something_method, param='one_param')

Тем самым мы тестируем метод send_something_method инциализрованного ранее объекта сlient с аргументами метода param и ожидаем что он выбросит исключение.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Mock для Context manager в Python

Mock для Context manager в Python

Встретился участок кода с контекстным менеджером. Потербовалось написать для этого юнит тест.
Для справки, контекстным менеджером в питоне называется конструкция вида:

with self.statsd_client.timer('metric'):
    pass

Для того чтобы сделать мок метода и не ловить ошибки

AtributeError __exit__

мы должны правильно описать мок:

timer = Mock()
timer.__enter__ = Mock(return_value=(Mock(), None))
timer.__exit__ = Mock(return_value=None)

self.statsd_client = Mock()
self.statsd_client.timer.return_value = timer

1 Comment

  1. Artem

    Дружище, спасибо большое. Долго не мог сделать мок на функцию с контекстным менеджером, а тут все понятно описано.

    Read more

Litecoind сервер — установка и запуск демона лайтов

Litecoind сервер — установка и запуск демона лайтов

Аналогично серверу bitcoind можно легко установить и запустить на Ubuntu (пример будет на ubuntu) litecoin сервер:

  1. Скачиваем последний дистрибутив litecoind для linux: https://litecoin.org
  2. Создаем папку: mkdir .litecoin , пересносим в /usr/bin: mv litecoin-cli /usr/bin/litecoin-cli
  3. Создаем файл конфигурации: cd ~/.litecoind && nano .litecoind.conf
    rpcuser=user
    rpcpassword=password
    rpcport=8332
    rpcallowip=1.2.3.4.5
    server=1
    prune=5500
    keypool=100
  4. Запускаем демон: litecoind -conf=litecoind.conf &

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Bitbucket pipelines + php unit tests

Bitbucket pipelines + php unit tests

Для сборки билда теперь можно использовать встроенный CI от Bitbucket. Для этого достаточно подключить Pipelines в настройках репозитория и создать примерно такой yml файл:

image: [ваш docker image]

pipelines:
  default:
    - step:
        script:
          - composer global require "fxp/composer-asset-plugin:^1.2.0"
          - composer install
          - php yii migrate --interactive=0
          - mysql -h 127.0.0.1 -u user --password=password db < config/dev.sql
          - php -S 127.0.0.1:5000 -t web >/dev/null 2>&1 &
          - cd tests && ../vendor/bin/codecept run
        services:
          - mysql
definitions:
  services:
    mysql:
      image: mysql
      environment:
        MYSQL_DATABASE: 'db'
        MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
        MYSQL_USER: 'user'
        MYSQL_PASSWORD: 'password'

При помощи данного pipeline вы можете прогонять как просто unit так и интеграционные тесты с использованием базы данных. Для популяции базы данных сначала накатываются миграции проекта, а затем и дамп sql.

Read more

Bitcoin REST API сервис

Bitcoin REST API сервис

Разработан специальный rest API сервис на Silex для работы с bitcoind сервером.
При помощи данного модуля вы сможете быстро проводить операции по генерации биткойн адреса для заданного пользователя, проведении новой операции, проверки входящих транзакций по адресам пользователя. Модуль предоставляет из себя готовый облачный bitcoin кошелек, имеет функции регистрации и авторизации новых пользователей, вывод баланса пользователя.

Read more

Установка bitcoind сервера

Установка bitcoind сервера

Ниже приведены шаги как можно достаточно быстро установить bitcoind кошелек на Ubuntu сервер.
Для работы потребуется установка bitcoind пакета + python 2.7 на вашей машине.

 

Шаг 1. Установка bitcoind:

sudo apt-get install build-essential && sudo apt-get install libtool autotools-dev autoconf && sudo apt-get install libssl-dev && sudo apt-get install libboost-all-dev && sudo add-apt-repository ppa:bitcoin/bitcoin && sudo apt-get update && sudo apt-get install bitcoind && mkdir ~/.bitcoin/ && cd ~/.bitcoin/ && nano bitcoin.conf

Шаг 2.  Настройка bitcoin.conf:

Read more

Bitcoin Coinbase API v2 новая версия

Bitcoin Coinbase API v2 новая версия

Обновлен класс работы с Bitcoin через сервис Coinbase.

В новой версии обновлены все необходимые методы для работы с платежным сервисом Coinbase:

class Coinbase implements PaymentInterface
{
    private $config = [];
    private $code = "";
    private $client = "";
    private $account;

    public $error;
    public $orderId;
    public $amount;

    public function printForm($params = []);

    public function validate($params = []);

    public function send($params = []);

    public function createAddress();

    public function getTransaction($tranId);
}

Данный класс упрощает работу API Coinbase: https://github.com/coinbase/coinbase-php

Read more

Конфигурация nginx+ssl+php-fpm

Конфигурация nginx+ssl+php-fpm

Минимальная конфигурация nginx для работы с https в связке php-fpm:

server {
   listen 80;
   listen 443 default_server ssl;
   server_name {{ server_name }};

   root /var/www/html/current;

   access_log  /var/log/nginx/{{ server_name }}_access.log;
   error_log  /var/log/nginx/{{ server_name }}_error.log;

   ssl_certificate /path_to_cert/{{ server_name }}.cert;
   ssl_certificate_key /path_to_cert/{{ server_name }}.cert;

   index index.php index.html index.htm;

   location / {
      try_files $uri $uri/ /index.php?q=$uri&$args;
   }

   error_page 404 /404.html;
   error_page 500 502 503 504 /50x.html;

   location = /50x.html {
      root /usr/share/nginx/html;
   }

   location ~ \.php$ {
      try_files $uri =404;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_index index.php;
      include fastcgi_params;
   }
}

 

Read more

Mock в PHPUnit + Stabs

Mock в PHPUnit + Stabs

Простой и наглядный пример использования моков и стабов для PHPUnit:

$mock = $this->getMock('Yandex', array('send'));
$mock->expects($this->once())->method('send')->will($this->returnValue('success'));

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more