There are `python-matplotlib` and `python-numpy` packages in the Debian/Ubuntu repos.
However, if you want to run in a virtualenv (with no-site-packages), and pip install these packages from PyPI, you need some system dependencies installed first to build with:
A by-product of our recent development efforts is a web testing framework. It has been available on Launchpad for a while, but I've never really announced it in public. We are using SST internally, and I want to expose it to a wider audience.
What is Selenium WebDriver?
Selenium (WebDriver) is a popular open-source library for automating browsers. It can be used to create functional/acceptance tests of a web application. The Selenium client bindings provide API's that allow you to programatically drive a browser and access web content/elements. The bindings are available and supported for many languages and platforms.
While working directly with Selenium API's from code is fine for ad-hoc browser interaction, it is rather low-level and lacks things necessary for creating suites of automated web tests. For larger-scale testing, you will soon want to use a framework to help organize, execute, and report.
Introducing SST...
SST aims to keep things simple.
Tests are made up of scripts, created by composing actions that drive a browser and assert conditions. You have the flexibility of the full Python language, along with a convenient set of functions to simplify web testing.
SST framework consists of:
user actions and assertions (API) in Python
test case loader (generates/compiles scripts to unittest cases)
console test runner
data parameterization/injection
selectable output reports
selectable browsers
headless (xvfb) mode
screenshots on errors
Test output can be displayed to the console, saved as an HTML report, or JUnit-compatible XML for compatibility with CI systems.
SST is free open source software (Apache Licensed). SST is primarily being developed on Linux, specifically Ubuntu. It should work fine on other platforms, but any issues (or even better - patches) should be reported on the Launchpad project:
"Corey Goldberg of Canonical and Dan Kuebrich of Tracelytics will tag-team to
tell us about web performance testing, and a few interesting tools they've built."
Free pizza and beer!
Come Join!
Edit/Update:
Thanks to all who attended! The night was a big success.
The slides from my portion of the presentation are posted here: webperf.html
After a bit of hacking, I got code_swarm visualizations running on my Ubuntu 11.04 box.
I'm capturing some pretty cool videos from source repos in git, bzr, and svn.
Here are some of the more interesting code-base visualization videos I've made:
This is a quick introduction to SeleniumWebDriver in Python on Ubuntu/Debian systems.
WebDriver (part of Selenium 2) is a library for automating browsers, and can be used from a variety of language bindings. It allows you to programmatically drive a browser and interact with web elements. It is most often used for test automation, but can be adapted to a variety of web scraping or automation tasks.
To use the WebDriver API in Python, you must first install the Selenium Python bindings. This will give you access to your browser from Python code. The easiest way to install the bindings is via pip.
On Ubuntu/Debian systems, this will install pip (and dependencies) and then install the Selenium Python bindings from PyPI:
'mpeg1audio' is a Pure Python MPEG Audio Layer 1, 2 and 3 meta information retrieval package. It is capable of retrieving duration, bitrate, average bitrate, sample count, etc.
Here is an example of using mpeg1audio for getting meta data from a directory of MP3 files.
This example combines the two solutions to capture screenshots inside a virtual display.
To achieve this, I use a combination of Selenium WebDriver and pyvirtualdisplay (which uses xvfb) to run a browser in a virtual display and capture screenshots.
I need to integrate my functional UI tests (Selenium/WebDriver) with my Jenkins CI system. The problem is that my Jenkins CI server has no display, so I must run my GUI tests in a headless X-server.
A colleague pointed me to PyVirtualDisplay, a Python wrapper for Xvfb and Xephyr.
This makes running headless Python Selenium/WebDriver tests very easy.
Here is some Python code showing WebDriver with a virtual display provided by Xvfb:
#!/usr/bin/env python
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
I just got back from UDS-O (Ubuntu Developer Summit, Oneiric Ocelot) in Budapest, Hungary. It was my first UDS, and my first time in Eastern Europe.
I was really worried that the time-change and jet-lag going to eastern Europe would mess me up. However, I felt really good the entire trip and adjusted almost instantly. My mood was good and I was ready to hack.
Some quick comments about the summit:
Budapest was fun and interesting, with beautiful weather and historic architecture.
The Ubuntu summit is a very well run event, where important decisions are made and work gets done.
Our Community rocks!
Ubuntu rocks!
I was able to attend a few UDS sessions throughout the week, but my main mission was an on-site sprint with my team at Canonical (ISD). Our team is globally-distributed, and this was my first chance to meet and work with all of them in person. While the entire summit was awesome, my most lasting memories will be of sitting crammed in a hot hotel room with a dozen of the finest hackers/colleagues I have ever worked with. As a new member to ISD, they made me feel welcomed and let me jump right in.
I put together a slide-deck to help introduce Multi-Mechanize. I wanted something a little friendlier and easier to digest than "go read the project wiki". (It is also the basis of a presentation/talk I might give someday).
Hopefully, this will help people better understand what the project is all about.
I just released my Python package: 'linux-metrics'
linux-metrics contains Python modules for getting OS metrics on systems running the Linux (2.6) kernel. It is a pure python library with no external dependencies.
This project is under development, and nowhere near comprehensive. Only basic stats for major subsystems are provided (Processor/CPU, Disk, Memory, Network). Hopefully, more are coming.