This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new eec48c4  Provide a vagrantfile to launch a linux vm for running 
integration tests
eec48c4 is described below

commit eec48c4e21145c361dcbd749ab699922dfc0c68c
Author: Sijie Guo <si...@apache.org>
AuthorDate: Sat May 12 14:45:25 2018 +0800

    Provide a vagrantfile to launch a linux vm for running integration tests
    
    Descriptions of the changes in this PR:
    
    *Motivation*
    
    Currently all bookkeeper's integration tests and bc tests are docker based 
and written
    using arquillian framework. Due to the network issues in docker and the way 
how bookies
    advertise themselves in the cluster, we can *ONLY* run integration tests in 
a linux
    environment. It is inconvinient to people who is using macOS as the 
development environment.
    
    *Solution*
    
    This PR is providing a Vagrantfile to lanuch a dev vm that contains all the 
tools required
    for running integration tests and bc tests. So people can actually debug 
and test integration
    tests locally using a linux vm.
    
    Author: Sijie Guo <si...@apache.org>
    
    Reviewers: Enrico Olivelli <eolive...@gmail.com>, Jia Zhai <None>
    
    This closes #1401 from sijie/vagrant_files
---
 .gitignore      |  3 ++
 dev/README.md   | 53 +++++++++++++++++++++++++++++++++++
 dev/Vagrantfile | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 143 insertions(+)

diff --git a/.gitignore b/.gitignore
index 6a111c3..98b8004 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,6 @@ dependency-reduced-pom.xml
 
 # Logs
 logs/
+
+# Vagrant
+**/.vagrant
diff --git a/dev/README.md b/dev/README.md
new file mode 100644
index 0000000..a2b1b87
--- /dev/null
+++ b/dev/README.md
@@ -0,0 +1,53 @@
+## Apache BookKeeper Dev Tools
+
+### Running Integration Tests on macOS
+
+Currently all the integration tests are docker based and written using 
arquillian framework. 
+Due to the networking issues, the integration tests can only be run on linux 
environment.
+For people who is using macOS as their development environment, you can use 
[Vagrant](https://www.vagrantup.com)
+to launch a linux virtual machine and run the integration tests there.
+
+1. [Download and Install](https://www.vagrantup.com/downloads.html) Vagrant.
+
+2. Provision and launch the dev vm.
+
+   ```shell
+   $ cd ${BOOKKEEPER_HOME}/dev
+   
+   # provision the vm
+   $ vagrant up
+   ```
+
+3. The dev vm will try to mount your current bookkeeper workspace to be under 
`/bookkeeper` in the vm. You might
+   potentially hit following errors due to fail to install VirtualBox Guest 
additions.
+
+   ```
+   /sbin/mount.vboxsf: mounting failed with the error: No such device
+   ```
+
+   If that happens, follow the below instructions:
+
+   ```
+   # ssh to the dev vm
+   $ vagrant ssh
+
+   [vagrant@bogon bookkeeper]$ sudo yum update -y
+   [vagrant@bogon bookkeeper]$ exit  
+
+   # reload the vm
+   $ vagrant reload
+   ```
+
+4. Now, you will have a bookkeeper dev vm ready for running integration tests.
+
+   ```shell
+   $ vagrant ssh
+
+   # once you are in the bookkeeper dev vm, you can launch docker.
+   [vagrant@bogon bookkeeper]$ sudo systemctl start docker
+
+   # your bookkeeper workspace will be mount under /bookkeeper
+   [vagrant@bogon bookkeeper]$ cd /bookkeeper
+
+   # you can build and test using maven commands
+   ```
diff --git a/dev/Vagrantfile b/dev/Vagrantfile
new file mode 100644
index 0000000..1f1f443
--- /dev/null
+++ b/dev/Vagrantfile
@@ -0,0 +1,87 @@
+#/**
+# * Licensed to the Apache Software Foundation (ASF) under one
+# * or more contributor license agreements.  See the NOTICE file
+# * distributed with this work for additional information
+# * regarding copyright ownership.  The ASF licenses this file
+# * to you under the Apache License, Version 2.0 (the
+# * "License"); you may not use this file except in compliance
+# * with the License.  You may obtain a copy of the License at
+# *
+# *     http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# */
+
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# All Vagrant configuration is done below. The "2" in Vagrant.configure
+# configures the configuration version (we support older styles for
+# backwards compatibility). Please don't change it unless you know what
+# you're doing.
+Vagrant.configure("2") do |config|
+  # The most common configuration options are documented and commented below.
+  # For a complete reference, please see the online documentation at
+  # https://docs.vagrantup.com.
+
+  # Every Vagrant development environment requires a box. You can search for
+  # boxes at https://vagrantcloud.com/search.
+  config.vm.box = "centos/7"
+
+  # Disable automatic box update checking. If you disable this, then
+  # boxes will only be checked for updates when the user runs
+  # `vagrant box outdated`. This is not recommended.
+  # config.vm.box_check_update = false
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # NOTE: This will enable public access to the opened port
+  # config.vm.network "forwarded_port", guest: 80, host: 8080
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine and only allow access
+  # via 127.0.0.1 to disable public access
+  # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: 
"127.0.0.1"
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network "private_network", ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network "public_network"
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  config.vm.synced_folder "..", "/bookkeeper"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  config.vm.provider "virtualbox" do |vb|
+    vb.name   = "bookkeeper_dev_vm"
+    vb.memory = "4096"
+  end
+  #
+  # View the documentation for the provider you are using for more
+  # information on available options.
+
+  # Enable provisioning with a shell script. Additional provisioners such as
+  # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
+  # documentation for more information about their specific syntax and use.
+  config.vm.provision "shell", inline: <<-SHELL
+    yum update -y
+    yum install -y kernel-devel
+    yum install -y kernel-headers
+    yum install -y wget vim java-1.8.0-openjdk-devel maven docker gcc-c++
+  SHELL
+end

-- 
To stop receiving notification emails like this one, please contact
si...@apache.org.

Reply via email to