Today I was struggling with Codeception tests. I’m working on Vagrant machine which has Apache2 installed.
Thing is that to view the page on my host machine I’m utilising Apache. But in the acceptance tests I’m using PHP built in server. To be specific https://github.com/tiger-seo/PhpBuiltinServer is used. It allows to run server as tests are running and destroy it at the end. It also supports many options.
Acceptance tests were broken. The Tester could not login. After some investigation I found that the issue was caused by read/write permissions for session. By default my Vagrant tries to store the session files in the /var/lib/php/session. As I opened my project in Apache earlier the permissions were given for it. There are two options to solve this:
- change the path for session files,
- change the permissions for the current path.
I choose first option. To be specific I changed it only for server used by tests. The extension allows to specify custom .ini file. So my file tests/php.ini look like this:
Also here’s part of my codeception.yml file:
Now session are working in tests 🙂
Today I was trying to bump the Postgres on my Vagrant to 9.4. The cookbook I’m using: https://supermarket.chef.io/cookbooks/postgresql.
Thing is that the cookbook defines a recipe yum_pgdg_postgresql. So to configure everything just add attributes, here’s example from my cookbook attributes default.rb file:
override['postgresql']['pgdg']['repo_rpm_url']['9.4']['centos']['6']['x86_64'] = 'http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm'
override['postgresql']['enable_pgdg_yum'] = true
override['postgresql']['version'] = "9.4"
First line is very important. Current version of cookbook postgresql provides up to 9.2 (source https://github.com/ngs/chef-postgresql/blob/master/attributes/default.rb#L200) version so we have to specify URL to fetch v9.4. As you can see it must specify all required data, postgresql version, os version and os technology used. All available versions for rpm are here http://yum.postgresql.org.
Second lines ensures that recipe yum_pgdg_postgresql will be included.
The last is obvious, version of postgresql to use.
Recently I heard that using NFS is much faster than default shared folders in the Vagrant with VirtualBox. After some research I started to upgrade my Vagrantfile. Here is snippet how to make you shared partition NFS type:
config.vm.synced_folder ".", "/my-project", type: "nfs"
And that’s all!
Yesterday I had a problem. When I tried to up the vagrant it failed. My recent changes (I changed the username on my OS X) broke something in the NFS configuration. Quick search and found the solution. Seems that I had wrong entries in the file /etc/exports. Here is bash fix:
sudo rm /etc/exports
sudo touch /etc/exports
After that all works like a charm 🙂
The machine started to work very fast. It should be set as a default sharing method…
PS. If you are working on the Windows, try a plugin https://github.com/winnfsd/vagrant-winnfsd