diff --git a/acceptance/openstack/compute/01-servers.go b/acceptance/openstack/compute/01-servers.go
new file mode 100644
index 0000000..9a729ff
--- /dev/null
+++ b/acceptance/openstack/compute/01-servers.go
@@ -0,0 +1,66 @@
+package main
+
+import (
+	"fmt"
+	"github.com/rackspace/gophercloud/openstack/compute/servers"
+	"github.com/rackspace/gophercloud/openstack/identity"
+	"github.com/rackspace/gophercloud/openstack/utils"
+)
+
+func main() {
+	ao, err := utils.AuthOptions()
+	if err != nil {
+		panic(err)
+	}
+
+	a, err := identity.Authenticate(ao)
+	if err != nil {
+		panic(err)
+	}
+
+	sc, err := identity.GetServiceCatalog(a)
+	if err != nil {
+		panic(err)
+	}
+
+	ep, err := findAnyComputeEndpoint(sc)
+	if err != nil {
+		panic(err)
+	}
+
+	client := servers.NewClient(ep, a, ao)
+
+	listResults, err := servers.List(client)
+	if err != nil {
+		panic(err)
+	}
+
+	svrs, err := servers.GetServers(listResults)
+	if err != nil {
+		panic(err)
+	}
+
+	for _, s := range svrs {
+		fmt.Printf("ID(%s)\n", s.Id)
+		fmt.Printf("    Name(%s)\n", s.Name)
+		fmt.Printf("    IPv4(%s)\n    IPv6(%s)\n", s.AccessIPv4, s.AccessIPv6)
+	}
+	fmt.Printf("--------\n%d servers listed.\n", len(svrs))
+}
+
+
+func findAnyComputeEndpoint(sc *identity.ServiceCatalog) (string, error) {
+	ces, err := sc.CatalogEntries()
+	if err != nil {
+		return "", err
+	}
+
+	for _, ce := range ces {
+		if ce.Type == "compute" {
+			return ce.Endpoints[0].PublicURL, nil
+		}
+	}
+
+	return "", fmt.Errorf("Compute endpoint not found.")
+}
+
