CKJM tool metrics not meeting the expectation - static-analysis

I used ckjm metrics tool for generating metrics on java class files.The metric values which it generated is not correct while checking manually.Please let me know,is anyone facing similar issue.
I ran ckjm metrics tool for generating metrics on java class files.These are the metrics we generated - WMC, DIT, NOC, CBO, RFC, LCOM, Ca, Ce, NPM, LCOM3, LOC, DAM, MOA, MFA, CAM, IC, CBM and AMC
Here DIT & NOC values are not meeting the expectation.

Related

Control the logging frequency and contents when using wandb with HuggingFace

I am using the wandb with my HuggingFace code. I would like to log the loss and other metrics. Now I have two questions
How does wandb decide when to log the loss? Is this decided by logging_steps in TrainingArguments(...)?
training_args = TrainingArguments(output_dir="test",
learning_rate=lr,
num_train_epochs=n_epoch,
seed=seed,
per_device_train_batch_size=2,
per_device_eval_batch_size=2,
logging_strategy="steps",
logging_steps=5,
report_to="wandb")
How do I make sure wandb log other metrics (for example, adding validation metrics after each epoch)? Does this happen automatically?
Correct, it is dictated by the on_log event from the Trainer, you can see it here in WandbCallback
Your validation metrics should be logged to W&B automatically every time you validate. How often Trainer does evaluation depends on what setting is used for evaluation_strategy (and potentially eval_steps if evaluation_strategy == "steps")

Access the leaderboard in h2o automl in between and extract metrics of models that are completed?

In h2o automl can we find which models are completed and see their metrics while training is going on ?
eg: maxmodels=5 , so can we extract the information of model 1 while others(models 2 ,3) are getting trained.
If you're using Python or R client to run H2OAutoML, you can see the progression — e.g. which model is being built or completed — using the verbosity='info' parameter.
For example:
aml = H2OAutoML(project_name="my_aml",
...,
verbosity='info')
aml.train(...)
If you're using the Flow web UI, this progress is shown automatically when you click on the running job.
You can then obtain the model ids from those console logs, and retrieve the models as usual in a separate client:
m = h2o.get_model('the_model_id')
or you can even access the current state of the leaderboard with the model metrics:
h2o.automl.get_automl('my_aml').leaderboard
The same logic applies to R client.
An alternative, maybe simpler if the goal is just to monitor progress, is to use Flow ( usually availble at http://localhost:54321 ) > 'Admin' > 'Jobs' > search for the AutoML job..

clear prometheus metrics from collector

I'm trying to modify prometheus mesos exporter to expose framework states:
https://github.com/mesos/mesos_exporter/pull/97/files
A bit about mesos exporter - it collects data from both mesos /metrics/snapshot endpoint, and /state endpoint.
The issue with the latter, both with the changes in my PR and with existing metrics reported on slaves, is that metrics created lasts for ever (until exporter is restarted).
So if for example a framework was completed, the metrics reported for this framework will be stale (e.g. it will still show the framework is using CPU).
So I'm trying to figure out how I can clear those stale metrics. If I could just clear the entire mesosStateCollector each time before collect is done it would be awesome.
There is a delete method for the different p8s vectors (e.g. GaugeVec), but in order to delete a metric, I need to not only the label name, but also the label value for the relevant metric.
Ok, so seems it was easier than I thought (if only I was familiar with go-lang before approaching this task).
Just need to cast the collector to GaugeVec and reset it:
prometheus.NewGaugeVec(prometheus.GaugeOpts{
Help: "Total slave CPUs (fractional)",
Namespace: "mesos",
Subsystem: "slave",
Name: "cpus",
}, labels): func(st *state, c prometheus.Collector) {
c.(*prometheus.GaugeVec).Reset() ## <-- added this for each GaugeVec
for _, s := range st.Slaves {
c.(*prometheus.GaugeVec).WithLabelValues(s.PID).Set(s.Total.CPUs)
}
},

carbon-tagger does not translate received metrics to Grapthite

I have configured monitoring system as bunch of next stuff:
my_app -> pystatsd -> statsdaemon -> carbon-tagger -> graphite (via carbon-cache) -> graph-explorer
But it looks like carbon-tagger does only dumping metrics to ElasticSearch but not to Graphite. In the same time carbon-tagger successfully send his internal metrics to carbon-cache and they appear in Graph Explorer well. I have look at the source code of the carbon-tagger and could not find place where it send any received from statsdaemon metrics to graphite. So now I'm confused! How should I configure my monitoring system to dump metrics both to the ElasticSearch and to the Graphite?
In a nutshell, correct configuration of described system should looks likes this:
That is, statsd/statsdaemon should pass in data to the carbon-relay (or carbon-relay-ng), not to the carbon-cache directly. And carbon-relay will broadcast data to the carbon-tagger and carbon-cache. Also, don't forget that carbon-tagger doesn't work with pickle format, while original carbon-relay produces data only through pickle protocol.

How to get Fedex testing tracking number?

I'm configuring FEDEX shipping in Magento website. I got test account number, password, API key and meter number by login in test FEDEX account. I configured myself in Magento. Looks like everything fine. But I don't know how to test is Track Order.
So where can I get tracking number for shipping methods? Should I enter randomly or how can I get that? I tried some forum suggested numbers. But I got below error in my popup:
Tracking information is currently not available
I also checked my shipping_fedex log file in Magento. got logged some error codes in printed array. That's I give in below.
**ERROR log**
[result] => stdClass Object (
[HighestSeverity] => ERROR
[Notifications] => stdClass Object (
[Severity] => ERROR
[Source] => trck
[Code] => 6035
[Message] => Invalid tracking numbers. Please check the following numbers and resubmit.
[LocalizedMessage] => Invalid tracking numbers. Please check the following numbers and resubmit.
)
[Version] => stdClass Object (
[ServiceId] => trck
[Major] => 5
[Intermediate] => 0
[Minor] => 0
)
)
FEDEX help:
What Numbers Can I Track?
Track by Tracking Number: You can enter
up to 30 tracking numbers at a time. You can enter any combination of
FedEx Express, FedEx Express Freight, FedEx Ground, FedEx SmartPost,
FedEx Freight, or FedEx Custom Critical tracking numbers. Please
ensure that you enter only one tracking number per line.
Edit: I used "99999999999" as per Derek suggestion. But I got below response. Still same error in pop up. What does mean __pid =>2432?
Array
(
[request] => <?xml version="1.0" encoding="UTF-8"?>
<FDXTrack2Request xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="FDXTrack2Request.xsd"><RequestHeader><AccountNumber>510087062</AccountNumber><MeterNumber>0</MeterNumber></RequestHeader><PackageIdentifier><Value>999999999999</Value></PackageIdentifier><DetailScans>1</DetailScans></FDXTrack2Request>
[result] =>
[__pid] => 2432
)
Your question is not at all stupid. I upvoted it.
The fedex documentation is horrible and doesn't mention how to use their services while testing and after moving to production. Their support is worse.
While I was rambling in the internet, I found a page mentioning the tracking number 123456789012 as a test number. Use it with your test credentials (key, password, account number and meter number), while you're setting your service path to https://wsbeta.fedex.com:443/web-services/track, and the request will return a valid response that you can build on.
Here’s a list of static tracking numbers that can be used in the FedEx test environment:
449044304137821 = Shipment information sent to FedEx
149331877648230 = Tendered
020207021381215 = Picked Up
403934084723025 = Arrived at FedEx location
920241085725456 = At local FedEx facility
568838414941 = At destination sort facility
039813852990618 = Departed FedEx location
231300687629630 = On FedEx vehicle for delivery
797806677146 = International shipment release
377101283611590 = Customer not available or business closed
852426136339213 = Local Delivery Restriction
797615467620 = Incorrect Address
957794015041323 = Unable to Deliver
076288115212522 = Returned to Sender/Shipper
581190049992 = International Clearance delay
122816215025810 = Delivered
843119172384577 = Hold at Location
070358180009382 = Shipment Canceled
In addition to: 123456789012
You can also use: 111111111111
** Every carrier (UPS, USPS, etc...) has lots of tracking numbers for lots of use-cases, but not FedEx... I find that very strange.
* Also... I am guessing FedEx expects you to use real tracking numbers even in their test environment. It's how I have been testing for multiple use-cases.
I hope this helps anyone, I have spent a while digging around.
On their website they list the tracking numbers you can use:
https://www.fedex.com/en-us/developer/web-services/process.html#develop
Expand the Testing Environment and Mock Tracking Numbers subheading.
Short answer
Use one of the tracking numbers from the table below (copied from Mock Tracking Numbers for FedEx Express and FedEx Ground) or number 123456789012, but mind that the FedEx Sandbox environment might be unstable during your testing and you might need to use FedEx API mocks instead (either built in-house using Wiremock or ready-made by a vendor).
Scan Event
Tracking Number
Track By Reference Info.
Shipment Account Number
Ship Date
Destination Postal Code
Shipment information sent to FedEx
449044304137821
Customer Reference: 115380173Ground Shipment ID: DMWsGWdnNN
510088000
15-08-2020
33126
Tendered
149331877648230
Ground Shipment ID: 149331877648230
510088000}]
15-08-2020
28752
Picked up
020207021381215
Ground Shipment ID: 53089528
510088000
15-08-2020
30549
Arrived at FedEx location
403934084723025
Ground Shipment ID: 403934084723025Department: 31826722
510088000
15-08-2020
99206
At local FedEx facility
920241085725456
Customer Reference: 0014243047/34684523 Ground Shipment ID: 920241085725456
510088000
15-08-2020
19720
At destination sort facility
568838414941
Shipper Reference: P218101_004154359Purchase Order: P218101_004154359
510088000
15-08-2020
85388
Departed FedEx location
039813852990618
Customer Reference: 4631962Ground Shipment ID: THE HOUSEDepartment: McGeePurchase Order: 3385158
510088000
15-08-2020
24740
On FedEx vehicle for delivery
231300687629630
Customer Reference: W62283340102Ground Shipment ID: 231300687629630Purchase Order: 6228334
510088000
15-08-2020
33126
International shipment release
797806677146
N/A
Customer not available or business closed (Delivery Exception 007)
377101283611590
Ground Shipment ID: 377101283611590
510088000
15-08-2020
95815
Local delivery restriction (Delivery Exception 083)
852426136339213
Customer Reference: 118402713013
510088000
15-08-2020
11375
Incorrect address (Delivery Exception 03)
797615467620
Shipper Reference: OTHER-TK104
510088000
15-08-2020
70810
Unable to deliver (Shipment Exception 099)
957794015041323
N/A
Returned to sender/shipper
076288115212522
Invoice: 81909
510088000
15-08-2020
50323
Clearance delay (International)
581190049992
N/A
Delivered
122816215025810
Customer Reference: PO#174724
510088000
15-08-2020
24273
Hold at location
843119172384577
N/A
Shipment canceled
070358180009382
Customer Reference: 15241402Ground Shipment ID: 070358180009382
510088000
15-08-2020
94545
Duplicate Tracking Number
713062653486
Unique Identifier 1: 2457821000~713062653486~FXUnique Identifier 2: 2457835000~713062653486~FX
Long answer
The FedEx Sandbox has numerous stability and test data problems. For example, if you use tracking code 123456789012 you will get a different response status depending on the state of the FedEx Sandbox environment.
If you are performing a one-off manual test of your Magento integration with FedEx API, then using the FedEx Sandbox should be sufficient, and you can go ahead and use one of the codes provided above.
If however, you are running automated regression or integration tests on a schedule or per commit then the instability of the environment might cripple your testing. For example, you might see flaky tests and flaky builds and have to spend time investigating them even though there is nothing wrong with your code or tests, it's just an issue with the FedEx Sandbox API.
To resolve the issue with FedEx Sandbox environment stability you have three options, which are essentially about using test-doubles instead of the real FedEx Sandbox API:
Create and use mocks in your code instead of using the FedEx Sandbox. For example, Mockito in Java or uniuttest.mock in Python. This means you will have to write the FedEx Mockito mocks yourself. And it comes with several tradeoffs.
Create over-the-wire mocks with tools like Wiremock or Mountebank instead of using the FedEx Sandbox. There is a list of tools like that on Wikipedia. The issue here again is that you have to build those over-the-wire mocks yourself, which can be problematic if it's more than one API and you have a lot of work on your plate anyway.
Use ready-made FedEx API mocks like the one from Traffic Parrot instead of using the FedEx Sandbox. The advantage is they are created by experts and you can use them within minutes, just copy their mock API URL and use it instead of the FedEx one. You will have to pay for using them, which can sometimes be a downside of this option.
Here is a good one I pulled out of a code sample in the developer docs.
797843158299
The above list of tracking numbers will indeed work when pointed to the following server endpoint:
https://wsbeta.fedex.com:443/web-services/track
Note that the only time these numbers will not work is during FedEx's scheduled maintenance windows.
You may try getting the ship functionality working first. That will provide you a tracking no that can be used in testing tracking. I did it this way and it works for me!
We're trying to understand FEDEX tracking number testing too. I found this resource. But so far I'm not sure if the numbers work.
We'll update the answer later if we determine it helped or delete it if it does not:
https://www.fedex.com/us/developer/webhelp/ws/2019/US/index.htm#t=wsdvg%2FAppendix_F_Test_Server_Mock_Tracking_Numbers.htm

Resources