Index: src/sas/qtgui/Perspectives/Fitting/GPUOptions.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/GPUOptions.py	(revision c82fd8fa350303f2735e17d31f907391a1b6774a)
+++ src/sas/qtgui/Perspectives/Fitting/GPUOptions.py	(revision ced1bff8b21c8df3cf33ca1d0d50b573f7de9252)
@@ -3,7 +3,10 @@
 import sys
 import sasmodels
+import json
+import platform
 
 from PyQt4 import QtGui, QtCore, QtWebKit
 from sas.qtgui.Perspectives.Fitting.UI.GPUOptionsUI import Ui_GPUOptions
+from sas.qtgui.Perspectives.Fitting.UI.GPUTestResultsUI import Ui_GPUTestResults
 
 try:
@@ -57,9 +60,10 @@
             # Expand group and shift items down as more are added
             self.openCLCheckBoxGroup.resize(391, 60 + i)
-            self.okButton.setGeometry(QtCore.QRect(20, 90 + i, 93, 28))
-            self.resetButton.setGeometry(QtCore.QRect(120, 90 + i, 93, 28))
-            self.testButton.setGeometry(QtCore.QRect(220, 90 + i, 93, 28))
-            self.helpButton.setGeometry(QtCore.QRect(320, 90 + i, 93, 28))
-            self.resize(440, 130 + i)
+            self.label.setGeometry(QtCore.QRect(20, 90 + i, 391, 37))
+            self.okButton.setGeometry(QtCore.QRect(20, 127 + i, 93, 28))
+            self.resetButton.setGeometry(QtCore.QRect(120, 127 + i, 93, 28))
+            self.testButton.setGeometry(QtCore.QRect(220, 127 + i, 93, 28))
+            self.helpButton.setGeometry(QtCore.QRect(320, 127 + i, 93, 28))
+            self.resize(440, 167 + i)
             i += 30
 
@@ -91,10 +95,83 @@
             self.sas_open_cl = None
 
+    def set_open_cl(self):
+        """
+        Set openCL value when tests run or OK button clicked
+        """
+        no_opencl_msg = False
+        if self.sas_open_cl:
+            os.environ["SAS_OPENCL"] = self.sas_open_cl
+            if self.sas_open_cl.lower() == "none":
+                no_opencl_msg = True
+        else:
+            if "SAS_OPENCL" in os.environ:
+                del os.environ["SAS_OPENCL"]
+        # Sasmodels kernelcl doesn't exist when initiated with None
+        if 'sasmodels.kernelcl' in sys.modules:
+            sasmodels.kernelcl.ENV = None
+        reload(sasmodels.core)
+        return no_opencl_msg
+
     def testButtonClicked(self):
         """
-        Run the model tests when the test button is clicked
-        """
-        # TODO: Do something
-        pass
+        Run sasmodels check from here and report results from
+        """
+
+        no_opencl_msg = self.set_open_cl()
+
+        # Only import when tests are run
+        from sasmodels.model_test import model_tests
+
+        try:
+            from sasmodels.kernelcl import environment
+            env = environment()
+            clinfo = [(ctx.devices[0].platform.vendor,
+                       ctx.devices[0].platform.version,
+                       ctx.devices[0].vendor,
+                       ctx.devices[0].name,
+                       ctx.devices[0].version)
+                      for ctx in env.context]
+        except ImportError:
+            clinfo = None
+
+        failures = []
+        tests_completed = 0
+        for test in model_tests():
+            try:
+                test()
+            except Exception:
+                failures.append(test.description)
+
+            tests_completed += 1
+
+        info = {
+            'version': sasmodels.__version__,
+            'platform': platform.uname(),
+            'opencl': clinfo,
+            'failing tests': failures,
+        }
+
+        msg_info = 'OpenCL tests results'
+
+        msg = str(tests_completed) + ' tests completed.\n'
+        if len(failures) > 0:
+            msg += str(len(failures)) + ' tests failed.\n'
+            msg += 'Failing tests: '
+            msg += json.dumps(info['failing tests'])
+            msg += "\n"
+        else:
+            msg += "All tests passed!\n"
+
+        msg += "\nPlatform Details:\n\n"
+        msg += "Sasmodels version: "
+        msg += info['version'] + "\n"
+        msg += "\nPlatform used: "
+        msg += json.dumps(info['platform']) + "\n"
+        if no_opencl_msg:
+            msg += "\nOpenCL driver: None"
+        else:
+            msg += "\nOpenCL driver: "
+            msg += json.dumps(info['opencl']) + "\n"
+        GPUTestResults(self, msg, msg_info)
 
     def helpButtonClicked(self):
@@ -120,16 +197,5 @@
         Close the window after modifying the SAS_OPENCL value
         """
-        # If statement added to handle Reset
-        if self.sas_open_cl:
-            os.environ["SAS_OPENCL"] = self.sas_open_cl
-        else:
-            if "SAS_OPENCL" in os.environ:
-                del os.environ["SAS_OPENCL"]
-
-        # Sasmodels kernelcl doesn't exist when initiated with None
-        if 'sasmodels.kernelcl' in sys.modules:
-            sasmodels.kernelcl.ENV = None
-
-        reload(sasmodels.core)
+        self.set_open_cl()
         super(GPUOptions, self).reject()
 
@@ -140,4 +206,15 @@
         self.close()
         self.parent.gpu_options_widget = GPUOptions(self)
+
+
+class GPUTestResults(QtGui.QDialog, Ui_GPUTestResults):
+    """
+    OpenCL Dialog to modify the OpenCL options
+    """
+    def __init__(self, parent, msg, title):
+        super(GPUTestResults, self).__init__(parent)
+        self.setupUi(self)
+        self.resultsText.setText(_translate("GPUTestResults", msg, None))
+        self.open()
 
 
Index: src/sas/qtgui/Perspectives/Fitting/UI/GPUOptionsUI.ui
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UI/GPUOptionsUI.ui	(revision a6cd8d1a828b75a953f9152686a51ac648be67ee)
+++ src/sas/qtgui/Perspectives/Fitting/UI/GPUOptionsUI.ui	(revision ced1bff8b21c8df3cf33ca1d0d50b573f7de9252)
@@ -8,5 +8,5 @@
     <y>0</y>
     <width>440</width>
-    <height>178</height>
+    <height>211</height>
    </rect>
   </property>
@@ -17,6 +17,6 @@
    <property name="geometry">
     <rect>
-     <x>220</x>
-     <y>140</y>
+     <x>120</x>
+     <y>170</y>
      <width>93</width>
      <height>28</height>
@@ -31,5 +31,5 @@
     <rect>
      <x>320</x>
-     <y>140</y>
+     <y>170</y>
      <width>93</width>
      <height>28</height>
@@ -59,6 +59,6 @@
    <property name="geometry">
     <rect>
-     <x>120</x>
-     <y>140</y>
+     <x>220</x>
+     <y>170</y>
      <width>93</width>
      <height>28</height>
@@ -73,5 +73,5 @@
     <rect>
      <x>20</x>
-     <y>140</y>
+     <y>170</y>
      <width>93</width>
      <height>28</height>
@@ -80,4 +80,25 @@
    <property name="text">
     <string>OK</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>132</y>
+     <width>391</width>
+     <height>37</height>
+    </rect>
+   </property>
+   <property name="font">
+    <font>
+     <pointsize>8</pointsize>
+    </font>
+   </property>
+   <property name="text">
+    <string>WARNING: Running tests can take a few minutes!</string>
+   </property>
+   <property name="alignment">
+    <set>Qt::AlignCenter</set>
    </property>
   </widget>
Index: src/sas/qtgui/Perspectives/Fitting/UI/GPUTestResultsUI.ui
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UI/GPUTestResultsUI.ui	(revision ced1bff8b21c8df3cf33ca1d0d50b573f7de9252)
+++ src/sas/qtgui/Perspectives/Fitting/UI/GPUTestResultsUI.ui	(revision ced1bff8b21c8df3cf33ca1d0d50b573f7de9252)
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>GPUTestResults</class>
+ <widget class="QDialog" name="GPUTestResults">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>441</width>
+    <height>439</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QDialogButtonBox" name="buttonBox">
+   <property name="geometry">
+    <rect>
+     <x>10</x>
+     <y>400</y>
+     <width>411</width>
+     <height>32</height>
+    </rect>
+   </property>
+   <property name="orientation">
+    <enum>Qt::Horizontal</enum>
+   </property>
+   <property name="standardButtons">
+    <set>QDialogButtonBox::Ok</set>
+   </property>
+   <property name="centerButtons">
+    <bool>false</bool>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>330</y>
+     <width>401</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>If tests fail on OpenCL devices, please select the No OpenCL option.</string>
+   </property>
+   <property name="alignment">
+    <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_2">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>360</y>
+     <width>401</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>In the case where many tests are failing, please consider sending the above report to help@sasview.org.</string>
+   </property>
+   <property name="alignment">
+    <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+   </property>
+   <property name="wordWrap">
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QGroupBox" name="TestResultsBox">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>10</y>
+     <width>401</width>
+     <height>321</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string>OpenCL test results</string>
+   </property>
+   <widget class="QLabel" name="resultsText">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>20</y>
+      <width>381</width>
+      <height>291</height>
+     </rect>
+    </property>
+    <property name="sizePolicy">
+     <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+      <horstretch>0</horstretch>
+      <verstretch>0</verstretch>
+     </sizepolicy>
+    </property>
+    <property name="frameShape">
+     <enum>QFrame::StyledPanel</enum>
+    </property>
+    <property name="frameShadow">
+     <enum>QFrame::Sunken</enum>
+    </property>
+    <property name="text">
+     <string>TextLabel</string>
+    </property>
+    <property name="alignment">
+     <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+    </property>
+    <property name="wordWrap">
+     <bool>true</bool>
+    </property>
+   </widget>
+  </widget>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>GPUTestResults</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>228</x>
+     <y>414</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>GPUTestResults</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>296</x>
+     <y>420</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
