Difference between revisions of "Race Conditions Studio"

From CSE231 Wiki
Jump to navigation Jump to search
Line 26: Line 26:
 
{{TestSuite|RaceConditionTestSuite|racecondition.studio}}
 
{{TestSuite|RaceConditionTestSuite|racecondition.studio}}
  
{{Tip|Use The Repeat Test Suite}}
+
{{Warning|Run Tests Repeatedly To Better Determine That You Are Not Just Getting A Lucky Run.}}
  
{{TestSuite|RaceConditionTestSuite|racecondition.studio}}
+
{{TestSuite|RepeatRaceConditionTestSuite|racecondition.studio.bettersafethansorry}}
  
 
<!--
 
<!--

Revision as of 18:24, 22 February 2018

Motivation

Race conditions can lead to difficult bugs to find and fix. We gain experience finding them and fixing them.

Background

In this studio, you will take in a collection of strings, clean up each string, and add it into another collection of strings concurrently. You will also take in a collection of words, assign a point value to each word, and then put it into a map. Although not terribly exciting, the point of this studio is to teach you how to avoid data races when performing concurrent tasks. In order to accomplish these tasks, you will use the ConcurrentLinkedQueue, array, and ConcurrentHashMap classes.

Code To Use

ConcurrentHashMap

compute(key, remappingFunction)

Code To Debug

Word Score

class: SuspectWordScore.java Debugging icon.png
methods: toCleanedWordsViaArray
package: racecondition.studio.wordscore
source folder: student/src/main/java

method: public static List<String> toCleanedWordsViaArray(Collection<String> sourceLines) Parallel.svg (parallel implementation required)

Merge Sort

class: SuspectMergeSort.java Debugging icon.png
methods: parallelMergeSortKernel
package: racecondition.studio.mergesort
source folder: student/src/main/java

method: private static void parallelMergeSortKernel(int[] data, int lowInclusive, int highExclusive, int threshold, Combiner combiner) Parallel.svg (parallel implementation required)

Word Count

class: SuspectWordCountTest.java Debugging icon.png
methods: countWords
package: racecondition.studio.wordcount
source folder: student/src/main/java

method: public static Map<String, Integer> countWords(Iterable<String> words) Parallel.svg (parallel implementation required)

Testing Your Solution

Correctness

class: RaceConditionTestSuite.java Junit.png
package: racecondition.studio
source folder: testing/src/test/java
Attention niels epting.svg Warning:Run Tests Repeatedly To Better Determine That You Are Not Just Getting A Lucky Run.
class: RepeatRaceConditionTestSuite.java Junit.png
package: racecondition.studio.bettersafethansorry
source folder: testing/src/test/java