Managing Teradata changes with RTC SCM and Jazz Build

Managing database schema changes can be a non-trivial task. Very often the danger associated with potential bad changes being deployed makes DBAs very protective of their territories and resistant to changing tried and true methods.

However, the push towards more Agile development methods, adoption of DevOps practices and Continuous Delivery capabilities is including database development in its embrace; the last 10 years or so has seen a lot of work towards aligning database development with application development best practices. That said, there are probably quite a few organisations out there where the normal practice for deploying database changes is to use some sort of “list of instructions” and various GUI DB tools with maybe some scripts thrown in. Even adopting practices such as SCM and CI can appear daunting.

Continue reading “Managing Teradata changes with RTC SCM and Jazz Build”

Old dog, new trick: RTC and UrbanCode Deploy

Calling Rational Team Concert an old dog isn’t fair  – it’s only just over 5 years old –  and I mean it in the nicest possible way in the context of the Jazz Jumpstart team being “old”, and the Rational Emerging Technologies Team, well, “emerging”.

Anywho, as is my wont, I was going through what could be in the next CLM release, noticed the bit about Rational Team Concert Build and IBM UrbanCode Deploy and decided to try out this “emerging” feature with Rational Team Concert 4.0.5 RC1.

Continue reading “Old dog, new trick: RTC and UrbanCode Deploy”

Executing a JMeter testplan from Rational Quality manager

About this time last year I wrote a couple of posts on using JMeter against  a Jazz server. A few days ago Gary posted a comment about “making it possible to kick off JMeter tests from RQM and get results sent back so that they can be managed inside RQM” and it stuck in my head, so here’s how it can be done.

RQM allows arbitrary tools to be executed as “test tools” via one facility : the Command Line Adapter. It’s pretty well documented in the Infocentre and Article 809 on Jazz.net . So it ended up being a (mostly:-) straightforward exercise. My requirements were simple: execute a JMeter testplan from RQM and get the appropriate result (PASSED, FAILED,…) to be set for the RQM Test Result. The result would depend on the result of executing a HTTP Request and I’d consider it a bonus if I could set a Custom Property on the RQM result with the value of the HTTP Response Message.

Continue reading “Executing a JMeter testplan from Rational Quality manager”

In memory of Popo: A couple of tips importing ClearCase to RTC

We’ve always had pets since I was very young: dogs, cats, cows, goats, rabbits, a fox that escaped and wiped out the rabbits; even a “Bambi” that disappeared, though we had some fantastic chilli venison a couple of nights later. “Popo” was one of a long line of dogs we’ve had; a mostly unremarkable Pomeranian; memorable for the fact that the day he was given to us, he was so terrified of his new surroundings and all us kids squealing over him that he jumped up on mum’s lap and did “his business” on her:-)

Continue reading “In memory of Popo: A couple of tips importing ClearCase to RTC”

Managing Android platform source with RTC

My previous post on populating and testing a large Jazz repository could be tested with JMeter was primarily focused on the Work Item capability in RTC. I also needed to populate the repository with lots of SCM data and rather than take the “dumb” (ie. random) path as I had done with the Work Items, I wanted to use a more “realistic” set of artifacts.

I didn’t have to look very far: the Android platform which has apparently become the leading smart phone platform (canalys.com) and 300+ million Android-based smartphone activations (prweb.com). There are already a bunch of posts on Jim’s blog and Jazz.net on how to use RTC for Android app development, so I turned my attention to the Android Platform source, from the AOSP, which proves to be a different kettle of fish when it comes to SCM.

Continue reading “Managing Android platform source with RTC”

(J)Metering a Jazz server – Part II

Continuing my journey on the JMeter road, I found Jmeter has a number of other features that help to make Test Plans more generic and useful.

Continue reading “(J)Metering a Jazz server – Part II”

(J)Metering a Jazz server – Part I

Tox wrote (is writing) a series on monitoring Jazz performance. Timely indeed as I’ve been working out just how a CLM server performs under load : a single-tier server holding about 3 million Work Items, with 300+ project areas, 3000 registered users (upto 500 concurrent with 20% of them raising ~5 work items an hour ), 50+ GB of SCM content (120 components, 300 streams).

There’s enough excellent stuff on CLM performance on Jazz.net (articles 790, 720 , 641, 814) but what I wanted was to see what happened with the specific repository size described above.

Continue reading “(J)Metering a Jazz server – Part I”

Jazzing up my TV

My TV blew up.

We rarely watch TV anyway (except for any All Blacks games, The Game of Thrones, Dexter, Sherlock Holmes, Modern Family and House of course:-) so we got rid of the Foxtel cable box and haven’t had a TV for a couple of months now. Seriously, no TV. Haven’t missed it. Well, until my wife and I were in the living room last week, with the fire going and she says “Would have been nice to flick through the channels to see what’s on, wouldn’t it?”.  So I set out to buy one, did a bit of research on what was out there and  settled on a Samsung Smart TV. No, not the really big, really cool one with the motion/voice control, facial recognition.

My main requirement is simplicity. I have an Airport Express, an Apple TV, a T-Box, DVD player, a USB drive full of home videos and copies of my DVDs, a  HD PVR that I use to get the content out of the T-Box onto the USB drive so I can watch it on my 27″ iMac in the other room and a HMDI switch as the TV only had one HDMI input. Yeah, a lot of messy cables and messy moving,copying stuff around just so I can kind of watch/listen to any of my content anywhere. Part of the problem was my old TV, it had neither USB nor network connectivity.

The new Samsung that’s coming over in a couple of days does everything I need, it does 3D and is about a fifth the thickness and weight of my old one. I was rubbing my hands in glee at the thought of hooking it all up when my wife took the glee out of it when she pointed out that all I need to do is hook up 3 HDMI cables and one Ethernet cable to it. Bummer! I’ve had to put all those extra cables, adapters, connectors etc in the garage.
What on earth does this have to do with Jazz? Not much, except that (if I’m allowed!) I can have a 40″ full HD external display on which to put all those Eclipse, browser, Notes, RDP windows when I’m working:-) And still watch in one corner the All Blacks thrash whichever team happens to get past the Haka.

Apparently all this multi-tasking, context switching isn’t so good for productivity, but I digress.

My brain made some vague connections between my new TV and Jazz (RTC specifically) when I was reading Robin’s post on finding files and re-reading Jean-Michel’s Christmas Gift post. As I said to the good members of the NSW South Coast chapter of the ACS last week: the word for the day is “integration“. What about “integration”? Well, it doesn’t exist in RTC’s vocbulary. Oh, sure it does when you want to connect it to all sorts of other systems and tools. But when talking about providing all the capabilities that make development teams effective and productive – version control, task tracking, development planning, build management, process execution, in-context collaboration, real-time status updates- the word “integration” isn’t one I’d use with RTC. Because all of this stuff is “just there”. I don’t need that extra “cable” or “adapter”  or “connector” just to get what I see as fundamental capabilites that every development team should have.

On the other hand this missing word was also a problem for me. Just as I enjoyed working out how connect all these different audio/visual components together, I also used to enjoy integrating different tools together and making them sing. Didn’t matter whether these were custom built integrations (like one I built between FoxPro and Quattro Pro way back in 1991) or “out-of-the-box” integrations (your pick of your favourite combination of ClearQuest, ClearCase, Bamboo, Crucible, Subversion, Cruise Control, Jira, Git, Bugzilla ad nauseum). What takes the glee out of this was that all the time and effort I was spending in integrating stuff meant less time and effort devoted to actually using the things that were being integrated.

In other words: the half hour I spent fiddling with stuff was a half hour of a House episode missed.

Clusters of CLM applications without a GUI

I haven’t had much time to write much over the past few weeks as I’ve spent most of my time writing up https://jazz.net/wiki/bin/view/Main/DeployingCLMClusterWithWASND and a week with customers in Seoul. A bit cold in Seoul, especially going from a warm though wet Sydney, but I love the food in Seoul and managed to keep warm.

Working on the clustering stuff has meant I’ve done very little on the Jazz side and a lot ( and I mean a LOT:-) on the Websphere side. Which reminded me of a conversation I had with Alex (http://alexetestelle.almandra.com/) around simplicity. Alex and Estelle had just completed a cycling tour of New Zealand and were visiting us in Sydney on their way back to France. Life on the road was pretty simple for them: not much more than the clothes on their back, their bicycles and panniers, and an iPhone. Alex is also pretty handy with computers and after overhearing a long conversation I had about troubleshooting an RTC installation on WAS, he shook his head and said “Ziz ees too complex no?” (No, he doesn’t really speak like that but is my rendition of his Gallic accented English.) We went on to talk about whether the IT world is guilty of making things unnecessarily complicated, Websphere being a case in point. I’m all in favor of simplicity or at least a facade of simplicity, taking a cue from what I see in nature: simple and beautiful patterns everywhere hiding incredibly complex systems, which funnily enough, are usually the result of fairly simple interactions. After the last few weeks, I’m craving even more simplicity,  though I’ve learnt a ton more about WAS.

Continue reading “Clusters of CLM applications without a GUI”

Digging out RRC custom attributes with RRDI

I seem to do a lot of “follow-up” posts: something I’m writing triggers something else and things start to multiply. Oh well…

This one is essentially the RRC version of  Digging out RTC custom attributes with RRDI (and Reporting on data with custom attributes).  As part of the workshop I needed to show a simple example of extracting and using a couple of attributes defined for an RRC requirement type. So I first assume that there are two attributes of type Integer named Cost and Multiplier defined for the Features in my RRC project.

I’ve modified a couple of Features to add values for these new attributes so I can get some meaningful data in RRDI.

The RRDI report I would like to generate should show these Features in a format similar to that in the graphic above, with an extra column that is the result of multiplying Cost by Multiplier.

Instead of starting with Query Studio as I did last time round, I’ll go straight to Report Studio and start with an empty List report.

The guts of the report lies in the following 5 queries/joins:

1. Requirements: Extracts the “Requirements ID” and “Name” columns from the Requirements query subject.

 

 

 

 

 

2. CostValues: Extracts the “Requirements ID”, “Extension Type Name” and “Value” columns from the Requirement Integer Extension query subject, with a Detail Filter [Extension Type Name]=’Cost’.

3. ReqsWithCost: A join on Requirements ID between the Requirements and CostValues queries, with the Requirements to CostValues cardinality set to 0..n (outer join). The outer join is important as without it the query will only show those requirements that have a value in the Cost attribute.

 

 

 

 

4. MultiplierValues: Extracts  the “Requirements ID”, “Extension Type Name” and “Value” columns from the Requirement Integer Extension query subject, with a Detail Filter [Extension Type Name]=’Multiplier’.

5. RequirementsCostMultipliers: A join on Requirements ID between the ReqWithCosts and MultiplierValues queries, with the Requirements to MultiplierValues cardinality set to 0..n (outer join). The outer join is important as without it the query will only show those requirements that have a value in the Multiplier attribute.

 

 

 

 

 

Once I’ve made sure I’ve added the Value attributes from both the Cost and Multiplier Extension query subjects to the final RequirementsCostMultipliers join, running the query should give a list of all requirements with values for Cost and Multiplier where available. I’ve sneaked in a Detail Filter on the Requirements query ([Requirement Type]=’Feature’) so only Features are shown.

Now that I have the correct data I add a calculated data item to RequirementsCostMultipliers that multiplies the Cost and Multiplier values.

Running the query shows the result of the calculation where available.

Now all that remains is to clean up the list on the report page to display the required results. I’ve also added a conditional style to the calculated column values to highlight null values and values above and  below a threshold in different colours.

Felt a little complicated but the only slightly complicated bit was working out how to put the queries together.