Been searching around the internet for a decent command line utility to eject or close the CD tray but can’t seem to find any. So i decided to write my own command line versions using visual studio 2010 and .net 4.
Note that the actual code does not utilize any of .net 4 features so you can easily take the same code and compile it against .net 1 or .net 2
The project is currently hosted in codeplex and can be found at http://ejectclosecdtray.codeplex.com/
Out of the box, should you try to view the TFS reports in SP2010, you will encounter 2 errors
1. Warning from Excel Services
This workbook contains one or more queries that refresh external data. A malicious user can design a query to access confidential information and distribute it to other users or perform other harmful actions.
If you trust the source of this workbook, click Yes to enable queries to external data in this workbook. If you are not sure, click No so that changes are not applied to your workbook.
Do you want to enable queries to external data in this workbook?
To fix this:
- On the SharePoint Central Administration home page, in the Application Management section, click Manage service applications.
- On the Service Applications page, click Excel Services Application.
- On the Manage Excel Services Application page, click Trusted File Locations.
- On the Excel Services Application Trusted File Locations page, point to the trusted file location that you want to edit (e.g. http://), click the arrow that appears, and then click Edit.
- On the Excel Services Application Edit Trusted File Location page, in the External Data section, clear the Refresh warning enabled checkbox, and then click OK.
2. Error at Excel Report
The data connection uses Windows Authentication and user credentials could not be delegated. The following connections failed to refresh:
TfsOlapReport
To fix this:
- On the Team Foundation Server Administration Console, click on the TFS server in question
- Click Extensions for Sharepoint Products
- Select the Sharepoint Web Application which you are using
- Click Modify Access
- Enter a user with access rights to the reports inside the Enterprise Application Definition field
- Click OK
Useful URLS:
http://blogs.msdn.com/b/granth/archive/2009/12/03/tfs2010-troubleshooting-sharepoint-dashboards-data-source-problems.aspx
http://msdn.microsoft.com/en-us/library/ee462863(VS.100).aspx
Now that you have TFS and the team project up and running, its time to start up XCode and get it to sync with TFS
In this example we are creating a new project and deploying it to TFS, if you have an existing project, you can follow the steps, then import your files into the new project and commit them to TFS
There are quite a number of steps to follow to get XCode to work with TFS. Do note that it may give some wierd errors during check in and check out, not sure why its happening, but the files are definitely processed
- Start up XCode
- Create a new project
- Create SCM (Source Control Management) Repository
- Click on SCM in the Menu
- Click on Configure SCM Repository
- Click on the [+] icon to create a new SCM Repository
- Enter a name for this SCM and click ok
- Configure SCM
- Scheme: http or https depending on what you configured
- Host: The FQN or IP address of the server you setup in part 1
- Path: The path to the folder where all the XCode files should be
- User: A valid username
- Password: the password associated with the username
- Click apply and you should get a green light along with the Authenticated word

- Delete project files from local disk
- Start finder and goto the folder where the project is located
- Delete the build folder
- Move the xcode project file out
- Import project to SCM
- Click on SCM in the Menu
- Click on Repositories
- Select the appropriate repository
- Click Import
- Browse to the folder where the project files are and click ok
- You may get the following error, but its ok

- Click on the Reload button to reload the SVN, you should see the folder with the files there
- Check out files from SCM
- Click on SCM in the Menu
- Click on Repositories
- Select the checked in folder
- Click check out
- Browse to the folder where the project used to be
- Click ok
- You will get a prompt indicating that the project has changed, do you want to reload, click yes
- Configure SCM for the project
- After reloading the project you will be looking at the new project
- Click on Configure SCM for this project
- Click on the [+] icon to create a new SCM Repository
- Click configure roots & SCM
- Click on the blank space beneath Repository and select the appropriate SCM

- Click ok
- Close the project info window
You have now successfully linked your xcode project to TFS. Try checking out a file, make changes and check in, you should see the changes reflected in TFS!
Note: You might get an error when checking in the file
Error: 20014 (Internal error) Description: Commit failed (details follow): Error: 20014 (Internal error) Description: A MERGE response for ‘/IPhone/XCODe/SampleProject/Classes/FirstViewController.m’ is not a child of the destination (‘/iPhone/XCODe/SampleProject/Classes’)
I’m not sure why this happens but your file is successfully checked in. what you need to do then is to discard your changes and click on update entire project under the SCM menu
Sorry for the delay, what with all the holidays and stuff, didn’t have time to sit down and create the next part in this series.
Anyway here’s the second part in this series.
Setting up a new TFS project for SVN
Before i proceed, let me assure you that YES, XCode and TFS can be made to cooperate even though they are from fellow competitors.
Now that you have got part 1 working, its time to setup the team project to work properly with XCode. Unless you use TFS purely as a source code repository (which is kind of wasted), otherwise chances are you will need to create a new team project to cater to the SVN implementation.
Because XCode connects to TFS via a SVN bridge, the project itself can only be used for source control and nothing else.
This means that the following are no no
- Check in rules
- Check out rules
- Multiple check out
Its been quite a while since my first post of VSTS and it seems Mercury Loadrunner has caught up in terms of functionality.
Anyway here’s my 2nd post in this series which tells you how to improve performance when doing a load test.
Things to note…
Since the load test agent is licensed based on a per processor model, it is generally advisable to get a processor with as many cores as possible, and also pump up the ram for the machine, but as the agent is a 32bit application, it will not be able to use > 4GB of ram and does not work so well in a x64 environment. Recommended installation environment is still either Windows XP or Windows 2003.
The good news is in VSTS 2010, the agent itself is x64 so all these issues should magically disappear
ok back to the main topic, how to optimize your load tests
- stick to a x86 os with a maximum of 4GB of ram for load test agents
- Turn on server GC
To enable your application to use Server GC, you need to modify either the VSTestHost.exe.config or the QTAgent.exe.config. If you are not using a Controller and Agent setup, then you need to modify the VSTesthost.exe.config. If you are using a controller and agent, then modify the QTAgent.exe.config for each agent machine.
Open the correct file. The locations are
VSTestHost.exe.config – C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
QTAgent.exe.config – C:\Program Files\Microsoft Visual Studio 2005 Team Test Load Agent\LoadTest
To enable gcserver you need to add the following line in the runtime section:
<gcServer enabled=”true” />
It should look something like:
<?xml version =”1.0″?>
<configuration>
<runtime>
<gcServer enabled=”true” />
<assemblyBinding xmlns=”urn:schemas-microsoft-com:asm.v1″>
<probing privatePath=”PrivateAssemblies;PublicAssemblies”/>
</assemblyBinding>
</runtime>
</configuration>
Source: http://blogs.msdn.com/slumley/pages/improve-load-test-performance-on-multi-processor-machines.aspx
- Turn on agent connection pooling (Run Settings -> MySettingsName ->Properties -> WebTest Connection Pool
By default VSTS emulates a client open and closing TCP connections to the server, however these opening and closing of connections take up resources. If your chief aim is to test the server, and especially if your server is sitting behind a load balancer with TCP offloading, turn this off
- Create a declarative WebTest program to easily change parameters inside your webtest
http://blogs.msdn.com/densto/pages/declarativewebtest-declarativewebtestserializer.aspx
- Specify ResponseBodyCaptureLimit – By indicating how much of the response you want to capture for parsing, you can run away from those dreaded agent out of memory errors, this is especially so when you are doing e.g a file download test
http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.webtesting.webtest.responsebodycapturelimit%28VS.80%29.aspx)
- Monitor your servers, but not so frequent: You don’t wish to overload your servers just because you want to monitor their performance right
I’ve been getting my hands dirty with Visual Studio Team Suite Load Test the past few months. In the coming few months, i will be posting several articles on my experiences with VSTS.
First i’ll start with a comparison between VSTS and Mercury LoadRunner. I’m including the version numbers as the newer versions of these 2 software promises much much more!
| Point of Comparison |
Mercury Load Runner 6
|
Visual Studio Load Test 2008
|
| Pricing |
Unlimited number of agent computers, pricing is per Virtual User (VU)
Useful if you have a whole lot of old computers or if you want to spread the load around in your network to find connection bottlenecks |
Pricing is per physical CPU, Microsoft states that each logical CPU can take up to 1000VU
As this is on a per CPU basis, you may want to get a relatively powerful (read 4/6/8 Core CPU, >=8gb) machine to be the load test agent.
Also, DO NOT install this on a VM, be it ESX or Hypervisor, performance of the agent in a virtual environment is at least 50% worse as compared to having it installed on a physical machine. |
| Monitoring Capabilities |
By default, it does not monitor any server, client parameters, of course these are available if you pay
This means that during any test run, engineers need to be around to monitor the server loads |
Able to monitor perfmon statistics (i.e windows machines), you can also specify the statistics to gather and save in your load test report.
It also comes with SQL Tracing for SQL Server, so you can monitor the long running queries with respect to your load test script.
With real time display of the server/client statistics, you can easily tell how the load test is running
On the downside, you will still have to monitor non-windows machines manually. |
| Virtual User Stepping |
You can specify User Stepping or Constant User Load |
You can specify User Stepping, Constant User Load or Goal based.
Goal based means VSTS will keep increasing the VU until a certain perfmon statistic is matched e.g web server 100% CPU |
| Testing Flexibility |
Able to test various systems, including web based, SAP etc
Databinding to text files is supported
Backend is something like C programming so you can easily change the parameters if required |
Able to test most systems, any additional functionality can be done via a custom app and using VSTS to run the app
Databinding to various data sources are supported
There are 2 formats to testing, coded and scripted tests.
Coded tests are simple C#/VB codes with events and stuff for ultimate flexibility at the expense of ease of editing.
Scripted tests is similar to what Mercury has to offer
One thing to note: If you have installed the VSTS SDK, you can actually use a program to run thru the scripts and change the parameters for a scripted test, e.g changing the think time for all web requests to 5 seconds. |